High data rate interface apparatus and method

ABSTRACT

A data interface for transferring digital data between a host and a client over a communication path using packet structures linked together to form a communication protocol for communicating a pre-selected set of digital control and presentation data. The signal protocol is used by link controllers configured to generate, transmit, and receive packets forming the communications protocol, and to form digital data into one or more types of data packets, with at least one residing in the host device and being coupled to the client through the communications path. The interface provides a cost-effective, low power, bi-directional, high-speed data transfer mechanism over a short-range “serial” type data link, which lends itself to implementation with miniature connectors and thin flexible cables which are especially useful in connecting display elements such as wearable micro-displays to portable computers and wireless communication devices.

CLAIM OF PRIORITY UNDER 35 U.S.C. §119

The present Application for Patent claims priority to ProvisionalApplication No. 60/552,176 entitled “Switchable Threshold DifferentialInterface” filed Mar. 10, 2004 and to Provisional Application No.60/554,309 entitled “Switchable Threshold Differential Interface” filedMar. 17, 2004, both applications of which are assigned to the assigneehereof and hereby expressly incorporated by reference herein.

BACKGROUND

1. Field

Embodiments of the invention in this disclosure relate to a digitalsignal protocol, process, and apparatus including integrated circuitsand components for communicating or transferring signals between a hostdevice and a client device at high data rates. More specifically, thedisclosure relates to a technique for transferring multimedia and othertypes of digital signals from a host or controller device to a clientdevice for presentation or display to an end user using a low power highdata rate transfer mechanism having internal and external deviceapplications.

2. Background

Computers, electronic game related products, and various videotechnologies (for example DVD's and High Definition VCRs) have advancedsignificantly over the last few years to provide for presentation ofincreasingly higher resolution still, video, video-on-demand, andgraphics images, even when including some types of text, to end users ofsuch equipment. These advances in turn mandated the use of higherresolution electronic viewing devices such as high definition videomonitors, HDTV monitors, or specialized image projection elements.Combining such visual images with high-definition or -quality audiodata, such as when using CD type sound reproduction, DVDs,surround-sound, and other devices also having associated audio signaloutputs, is used to create a more realistic, content rich, or truemultimedia experience for an end user. In addition, highly mobile, highquality sound systems and music transport mechanisms, such as MP3players, have been developed for audio only presentations to end users.This has resulted in increased expectations for typical users ofcommercial electronics devices, from computers to televisions and eventelephones, now being accustomed to and expecting high or premiumquality output.

In a typical video presentation scenario, involving an electronicsproduct, video data is typically transferred using current techniques ata rate that could be best termed as slow or medium, being on the orderof one to tens of kilobits per second. This data is then either bufferedor stored in transient or longer-term memory devices, for delayed(later) play out on a desired viewing device. For example, images may betransferred “across” or using the Internet using a program resident on acomputer having a modem or other type of Internet connection device, toreceive or transmit data useful in digitally representing an image. Asimilar transfer can take place using wireless devices such as portablecomputers equipped with wireless modems, or wireless Personal DataAssistants (PDAs), or wireless telephones.

Once received, the data is stored locally in memory elements, circuits,or devices, such as RAM or flash memory, including internal or externalstorage devices such as small size hard drives, for playback. Dependingon the amount of data and the image resolution, the playback might beginrelatively quickly, or be presented with longer-term delay. That is, insome instances, image presentation allows for a certain degree of realtime playback for very small or low resolution images not requiring muchdata, or using some type of buffering, so that after a small delay, somematerial is presented while more material is being transferred. Providedthere are no interruptions in the transfer link, or interference fromother systems or users relative to the transfer channel being used, oncethe presentation begins the transfer is reasonably transparent to theend user of the viewing device. Naturally, where multiple users share asingle communication path, such as a wired Internet connection,transfers can be interrupted or slower than desired.

The data used to create either still images or motion video are oftencompressed using one of several well known techniques such as thosespecified by the Joint Photographic Experts Group (JPEG), the MotionPicture Experts Group (MPEG), and other well known standardsorganizations or companies in the media, computer, and communicationsindustries to speed the transfer of data over a communication link. Thisallows transferring images or data faster by using a smaller number ofbits to transfer a given amount of information.

Once the data is transferred to a “local” device such as a computerhaving a storage mechanism such as memory, or magnetic or opticalstorage elements, or to other recipient devices, the resultinginformation is un-compressed (or played using special decoding players),and decoded if needed, and prepared for appropriate presentation basedon the corresponding available presentation resolution and controlelements. For example, a typical computer video resolution in terms of ascreen resolution of X by Y pixels typically ranges from as low as480×640 pixels, through 600×800 to 1024×1024, although a variety ofother resolutions are generally possible, either as desired or needed.

Image presentation is also affected by the image content and the abilityof given video controllers to manipulate the image in terms of certainpredefined color levels or color depth (bits per pixel used to generatecolors) and intensities, and any additional overhead bits beingemployed. For example, a typical computer presentation would anticipateanywhere from around 8 to 32, or more, bits per pixel to representvarious colors (shades and hues), although other values are encountered.

From the above values, one can see that a given screen image is going torequire the transfer of anywhere from 2.45 Megabits (Mb) to around 33.55Mb of data over the range from the lowest to highest typical resolutionsand depth, respectively. When viewing video or motion type images at arate of 30 frames per second, the amount of data required is around 73.7to 1,006 Megabits of data per second (Mbps), or around 9.21 to 125.75Megabytes per second (MBps). In addition, one may desire to presentaudio data in conjunction with images, such as for a multimediapresentation, or as a separate high resolution audio presentation, suchas CD quality music. Additional signals dealing with interactivecommands, controls, or signals may also be employed. Each of theseoptions adding even more data to be transferred. Furthermore, newertransmission techniques involving High Definition (HD) television andmovie recordings may add even more data and control information. In anycase, when one desires to transfer high quality or high resolution imagedata and high quality audio information or data signals to an end userto create a content rich experience, a high data transfer rate link isrequired between presentation elements and the source or host devicethat is configured to provide such types of data.

Data rates of around 115 Kilobytes (KBps) or 920 Kilobits per second(Kbps) can be routinely handled by some modern serial interfaces. Otherinterfaces such as USB serial interfaces, can accommodate data transfersat rates as high as 12 MBps, and specialized high speed transfers suchas those configured using the Institute of Electrical and ElectronicsEngineers (IEEE) 1394 standard, can occur at rates on the order of 100to 400 MBps. Unfortunately, these rates fall short of the desired highdata rates discussed above which are contemplated for use with futurewireless data devices and other services for providing high resolution,content rich, output signals for driving portable video displays oraudio devices. This includes computers for business and otherpresentations, gaming devices, and so forth. In addition, theseinterfaces require the use of a significant amount of host or system andclient software to operate. Their software protocol stacks also createan undesirably large amount of overhead, especially where mobilewireless devices or telephone applications are contemplated. Suchdevices have severe memory and power consumption limitations, as well asalready taxed computational capacity. Furthermore, some of theseinterfaces utilize bulky cables which are too heavy and unsatisfactoryfor highly aesthetic oriented mobile applications, complex connectorswhich add cost, or simply consume too much power.

There are other known interfaces such as the Analog Video GraphicsAdapter (AVGA), Digital Video Interactive (DVI) or Gigabit VideoInterface (GVIF) interfaces. The first two of these are parallel typeinterfaces which process data at higher transfer rates, but also employheavy cables and consume large amounts of power, on the order of severalwatts. Neither of these characteristics are amenable to use withportable consumer electronic devices. Even the third interface consumestoo much power and uses expensive or bulky connectors.

For some of the above interfaces, and other very high rate datasystems/protocols or transfer mechanisms associated with data transfersfor fixed installation computer equipment, there is another majordrawback. To accommodate the desired data transfer rates also requiressubstantial amounts of power and/or operation at high current levels.This greatly reduces the usefulness of such techniques for highly mobileconsumer oriented products.

Generally, to accommodate such data transfer rates using alternativessuch as say optical fiber type connections and transfer elements, alsorequires a number of additional converters and elements that introducemuch more complexity and cost, than desired for a truly commercialconsumer oriented product. Aside from the generally expensive nature ofoptical systems as yet, their power requirements and complexity preventsgeneral use for lightweight, low power, portable applications.

What has been lacking in the industry for portable, wireless, or mobileapplications, is a technique to provide a high quality presentationexperience, whether it be audio, video, or multimedia based, for highlymobile end users. That is, when using portable computers, wirelessphones, PDAs, or other highly mobile communication devices or equipment,the current video and audio presentation systems or devices being usedsimply cannot deliver output at the desired high quality level. Often,the perceived quality that is lacking is the result of unobtainable highdata rates needed to transfer the high quality presentation data. Thiscan include both transfer to more efficient, advanced or feature ladenexternal devices for presentation to an end user, or transfer betweenhosts and clients internal to portable devices such as computers, gamingmachines, and wireless devices such as mobile telephones.

In this latter case, there have been great strides made in adding higherand higher resolution internal video screens, and other specialty inputand/or output devices and connections to wireless devices like so calledthird generation telephones, and to so called laptop computers. However,internal data busses and connections which may include bridging acrossrotating or sliding hinge or hinge-like structures which mount orconnect video screens or other elements to the main housing where thehost and/or various other control elements and output components reside.These are generally high-bandwidth or high throughput interfaces. It isvery difficult to construct high throughput data transfers interfacesusing prior techniques which can require up to 90 conductors, or more,to achieve the desired throughput, on say a wireless telephone, as oneexample. Current solutions typically involve employing parallel typeinterfaces with relatively high signal levels which can cause theinterconnection to be more costly, less reliable and potentiallygenerate radiated emissions which could interfere with device functions.This presents many manufacturing, cost, and reliability challengingissues to overcome.

Such issues and requirements are also being seen on fixed locationinstallations where communication or computing type devices, as oneexample, are added to appliances and other consumer devices to provideadvanced data capabilities, Internet and data transfer connections, orbuilt in entertainment. Another example would be airplanes and busseswhere individual video and audio presentation screen are mounted inseat-backs. However, in these situations it is often more convenient,efficient, and easily serviceable to have the main storage, processing,or communication control elements located a distance from visiblescreens or audio outputs with an interconnecting link or channel for thepresentation of information. This link will need to handle a significantamount of data to achieve the desired throughput, as discussed above.

Therefore, a new transfer mechanism is needed to increase datathroughput between host devices providing the data and client displaydevices or elements presenting an output to end users.

Applicants have proposed such new transfer mechanisms in U.S. patentapplication Ser. No. 10/020,520 filed Dec. 14, 2001, now U.S. Pat. No6,760,772, issued Jul. 6, 2004 to Zou et al., and U.S. patentapplication Ser. No. 10/236,657 filed Sep. 6, 2002, both entitled“Generating And Implementing A Communication Protocol And Interface ForHigh Data Rate Signal Transfer,” now allowed, which are assigned to theassignee of the present invention and incorporated herein by reference.Also, U.S. application Ser. No. 10/860,116 filed on Jun. 2, 2004,entitled “Generating and Implementing a Signal Protocol and Interfacefor Higher Data Rates.” The techniques discussed in those applicationscan greatly improve the transfer rate for large quantities of data inhigh speed data signals. However, the demands for ever increasing datarates, especially as related to video presentations, continue to grow.Even with other ongoing developments in data signal technology, there isstill a need to strive for even faster transfer rates, improvedcommunication link efficiencies, and more powerful communication links.Therefore, there is a continuing need to develop a new or improvedtransfer mechanism which is needed to increase data throughput betweenhost and client devices.

SUMMARY

The above drawback, and others, existent in the art are addressed byembodiments of the invention in which a new protocol and data transfermeans, method and mechanism have been developed for transferring databetween a host device and a recipient client device at high data rates.

Embodiments for the invention are directed to a Mobile Data DigitalInterface (MDDI) for transferring digital data at a high rate between ahost device and a client device over a communication path which employsa plurality or series of packet structures to form a communicationprotocol for communicating a pre-selected set of digital control andpresentation data between the host and client devices. The signalcommunications protocol or link layer is used by a physical layer ofhost or client link controllers, receivers, or drivers. At least onelink controller or driver residing in the host device is coupled to theclient device through the communications path or link, and is configuredto generate, transmit, and receive packets forming the communicationsprotocol, and to form digital presentation data into one or more typesof data packets. The interface provides for bi-directional transfer ofinformation between the host and client, which can reside within acommon overall housing or support structure.

The implementation is generally all digital in nature with the exceptionof differential drivers and receivers which can be easily implemented ona digital CMOS chip, requires a few as 6 signals, and operates at almostany data rate that is convenient for the system designer. The simplephysical and link layer protocol makes it easy to integrate, and thissimplicity plus a hibernation state enables the portable system to havevery low system power consumption.

To aid in use and acceptance, the interface will add very little to thecost of a device, will allow for consumption of very little power whileable to power displays through the interface using standard batteryvoltages, and can accommodate devices having a pocket-able form-factor.The interface is scalable to support resolutions beyond HDTV, supportssimultaneous stereo video and 7.1 audio to a display device, performsconditional updates to any screen region, and supports multiple datatypes in both directions.

In further aspects of embodiments of the invention, at least one clientlink controller, receiver, device, or driver is disposed in the clientdevice and is coupled to the host device through the communications pathor link. The client link controller is also configured to generate,transmit, and receive packets forming the communications protocol, andto form digital presentation data into one or more types of datapackets. Generally, the host or link controller employs a state machinefor processing data packets used in commands or certain types of signalpreparation and inquiry processing, but can use a slower general purposeprocessor to manipulate data and some of the less complex packets usedin the communication protocol. The host controller comprises one or moredifferential line drivers; while the client receiver comprises one ormore differential line receivers coupled to the communication path.

The packets are grouped together within media frames that arecommunicated between the host and client devices having a pre-definedfixed length with a pre-determined number of packets having differentvariable lengths. The packets each comprise a packet length field, oneor more packet data fields, and a cyclic redundancy check field. ASub-frame Header Packet is transferred or positioned at the beginning oftransfers of other packets from the host link controller. One or moreVideo Stream type packets and Audio Stream type packets are used by thecommunications protocol to transfer video type data and audio type data,respectively, from the host to the client over a forward link forpresentation to a client device user. One or more Reverse LinkEncapsulation type packets are used by the communications protocol totransfer data from the client device to the host link controller. Thesetransfer in some embodiments include the transfer of data from internalcontrollers having at leas one MDDI device to internal video screens.Other embodiments include transfer to internal sound systems, andtransfers from various input devices including joysticks and complexkeyboards to internal host devices.

Filler type packets are generated by the host link controller to occupyperiods of forward link transmission that do not have data. A pluralityof other packets are used by the communications protocol to transfervideo information. Such packets include Color Map, Bit Block Transfer,Bitmap Area Fill, Bitmap Pattern Fill, and Transparent Color Enable typepackets. User-Defined Stream type packets are used by the communicationsprotocol to transfer interface-user defined data. Keyboard Data andPointing Device Data type packets are used by the communicationsprotocol to transfer data to or from user input devices associated withsaid client device. A Link Shutdown type packet is used by thecommunications protocol to terminate the transfer of data in eitherdirection over said communication path.

Display Power State Packets are generated to provide a structure, means,or method for placing specific display controller hardware into a lowpower state when a client such as a display is not being used or incurrent active use, in order to minimize the system power consumption ordrain on system resources. In one embodiment, a client indicates anability to respond to Display Power State Packets using bit 9 of aClient Feature Capability Indicators field of a Client CapabilityPacket.

The format of one embodiment for a Display Power State Packet, this typeof packet is structured to have Packet Length, Packet Type, hClient ID,Power State, and CRC fields. This type of packet is generally identifiedas a Type 75 packet in the 2-byte type field. The 2-byte hClient IDfield contains information or values that are reserved for a Client ID.The Power State field, specifies the information used to place aspecific display into the specified power state according to the valueof certain pre-selected bits. A 2 byte CRC field specifies or containsthe CRC of all bytes in the packet including the Packet Length.

The communication path generally comprises or employs a cable having aseries of four or more conductors and a shield. In addition, printedwires or conductors can be used, as desired, with some residing onflexible substrates.

The host link controller requests display capabilities information fromthe client device in order to determine what type of data and data ratessaid client is capable of accommodating through said interface. Theclient link controller communicates display or presentation capabilitiesto the host link controller using at least one Client Capability typepacket. Multiple transfer modes are used by the communications protocolwith each allowing the transfer of different maximum numbers of bits ofdata in parallel over a given time period, with each mode selectable bynegotiation between the host and client link controllers. These transfermodes are dynamically adjustable during transfer of data, and the samemode need not be used on the reverse link as is used on the forwardlink.

In other aspects of some embodiments of the invention, the host devicecomprises a wireless communications device, such as a wirelesstelephone, a wireless PDA, or a portable computer having a wirelessmodem disposed therein. A typical client device comprises a portablevideo display such as a micro-display device, and/or a portable audiopresentation system. Furthermore, the host may use storage means orelements to store presentation or multimedia data to be transferred tobe presented to a client device user.

In still other aspects of some embodiments, the host device comprises acontroller or communication link control device with drivers asdescribed below residing within a portable electronic device such as awireless communications device, such as a wireless telephone, a wirelessPDA, or a portable computer. A typical client device in thisconfiguration comprises a client circuit or integrated circuit or modulecoupled to the host and residing within the same device, and to aninternal video display such as a high resolution screen for a mobilephone, and/or a portable audio presentation system, or in thealternative some type of input system or device.

BRIEF DESCRIPTION OF THE DRAWINGS

Further features and advantages, as well as the structure and operationof various embodiments of the invention, are described in detail belowwith reference to the accompanying drawings. In the drawings, likereference numbers generally indicate identical, functionally similar,and/or structurally similar elements or processing steps.

FIG. 1A illustrates a basic environment in which embodiments of theinvention might operate including the use of a micro-display device, ora projector, in conjunction with a portable computer or other dataprocessing device.

FIG. 1B illustrates a basic environment in which embodiments of theinvention might operate including the use of a micro-display device or aprojector, and audio presentation elements used in conjunction with awireless transceiver.

FIG. 2A illustrates a basic environment in which embodiments of theinvention might operate including the use of internal display or audiopresentation devices used in a portable computer.

FIG. 2B illustrates a basic environment in which embodiments of theinvention might operate including the use of internal display or audiopresentation elements used in a wireless transceiver.

FIG. 3 illustrates the overall concept of a Mobile Digital DataInterface with a host and client interconnection.

FIG. 4 illustrates the structure of a packet useful for realizing datatransfers from a client device to a host device.

FIG. 5 illustrates the use of an MDDI link controller and the types ofsignals passed between a host and a client over the physical data linkconductors for a Type 1 interface.

FIG. 6 illustrates the use of an MDDI link controller and the types ofsignals passed between a host and a client over the physical data linkconductors for Types 2, 3, and 4 interfaces.

FIG. 7 illustrates the structure of frames and sub-frames used toimplement the interface protocol.

FIG. 8 illustrates the general structure of packets used to implementthe interface protocol.

FIG. 9 illustrates the format of a Sub-frame Header Packet.

FIG. 10 illustrates the format and contents of a Filler Packet.

FIG. 11 illustrates the format of a Video Stream Packet.

FIGS. 12A-12E illustrate the format and contents for the Video DataFormat Descriptor used in FIG. 11.

FIG. 13 illustrates the use of packed and unpacked formats for data.

FIG. 14 illustrates the format of an Audio Stream Packet.

FIG. 15 illustrates the use of byte-aligned and packed PCM formats fordata.

FIG. 16 illustrates the format of a User-Defined Stream Packet.

FIG. 17 illustrates the format of a Color Map Packet.

FIG. 18 illustrates the format of a Reverse Link Encapsulation Packet.

FIG. 19 illustrates the format of a Client Capability Packet.

FIG. 20 illustrates the format of a Keyboard Data Packet.

FIG. 21 illustrates the format of a Pointing Device Data Packet.

FIG. 22 illustrates the format of a Link Shutdown Packet.

FIG. 23 illustrates the format of a Client Request and Status Packet.

FIG. 24 illustrates the format of a Bit Block Transfer Packet.

FIG. 25 illustrates the format of a Bitmap Area Fill Packet.

FIG. 26 illustrates the format of a Bitmap Pattern Fill Packet.

FIG. 27 illustrates the format of a Communication Link Data ChannelPacket.

FIG. 28 illustrates the format of a Display Power State Packet.

FIG. 29 illustrates the format of a Perform Type Handoff Packet.

FIG. 30 illustrates the format of a Forward Audio Channel Enable Packet.

FIG. 31 illustrates the format of a Reverse Audio Sample Rate Packet.

FIG. 32 illustrates the format of a Digital Content Protection OverheadPacket.

FIG. 33 illustrates the format of a Transparent Color Enable Packet.

FIG. 34 illustrates the format of a Round Trip Delay Measurement Packet.

FIG. 35 illustrates the timing of events during the Round Trip DelayMeasurement Packet.

FIG. 36 illustrates a sample implementation of a CRC generator andchecker useful for implementing the invention.

FIG. 37A illustrates the timing of CRC signals for the apparatus of FIG.36 when sending data packets.

FIG. 37B illustrates the timing of CRC signals for the apparatus of FIG.36 when receiving data packets.

FIG. 38 illustrates processing steps for a typical service request withno contention.

FIG. 39 illustrates processing steps for a typical service requestasserted after the link restart sequence has begun, contending with linkstart.

FIG. 40 illustrates how a data sequence can be transmitted usingDATA-STB encoding.

FIG. 41 illustrates circuitry useful for generating the DATA and STBsignals from input data at the host, and then recovering the data at theclient.

FIG. 42 illustrates drivers and terminating resistors useful forimplementing one embodiment.

FIGS. 43 a-43 c illustrate steps and signal levels employed by a clientto secure service from the host and by the host to provide such service.

FIG. 44 illustrates relative spacing between transitions on the Data0,other data lines (DataX), and the strobe lines (Stb).

FIG. 45 illustrates the presence of a delay in response that can occurwhen a host disables the host driver after transferring a packet.

FIG. 46 illustrates the presence of a delay in response that can occurwhen a host enables the host driver to transfer a packet.

FIG. 47 illustrates leakage current analysis.

FIG. 48 illustrates switching characteristics and relative timingrelationships for host and client output enabled and disable time.

FIG. 49 illustrates a high level diagram of signal processing steps andconditions by which synchronization can be implemented using a statemachine.

FIG. 50 illustrates typical amounts of delay encountered for signalprocessing on the forward and reverse paths in a system employing theMDDI.

FIG. 51 illustrates marginal round trip delay measurement.

FIG. 52A illustrates Reverse Link data rate changes.

FIG. 52B illustrates an example of advanced reverse data sampling.

FIG. 53 illustrates a graphical representation of values of the ReverseRate Divisor versus forward link data rate.

FIGS. 54A and 54B illustrate steps undertaken in the operation of aninterface.

FIG. 55 illustrates an overview of the interface apparatus processingpackets.

FIG. 56 illustrates the format of a Forward Link Packet.

FIG. 57 illustrates typical values for propagation delay and skew in anType 1 Link interface.

FIG. 58 illustrates Data, Stb, and Clock Recovery Timing on a Type 1Link for exemplary signal processing through the interface.

FIG. 59 illustrates typical values for propagation delay and skew inType 2, Type 3 or Type 4 Link interfaces.

FIGS. 60A, 60B, and 60C illustrate different possibilities for thetiming of two data signals and MDDI_Stb with respect to each other,being ideal, early, and late, respectively.

FIG. 61 illustrates interface pin assignments exemplary connectors usedwith a Type-I/Type 2 interfaces.

FIGS. 62A and 62B illustrate possible MDDI_Data and MDDI_Stb waveformsfor both Type 1 and Type 2 Interfaces, respectively.

FIG. 63 illustrates a high level diagram of alternative signalprocessing steps and conditions by which synchronization can beimplemented using a state machine.

FIG. 64 illustrates exemplary relative timing between a series of clockcycles and the timing of a various reverse link packets bits and divisorvalues.

FIG. 65 illustrates exemplary error code transfer processing.

FIG. 66 illustrates apparatus useful for error code transfer processing.

FIG. 67A illustrates error code transfer processing for codeoverloading.

FIG. 67B illustrates error code transfer processing for code reception.

FIG. 68A illustrates processing steps for a host initiated wake-up.

FIG. 68B illustrates processing steps for a client initiated wake-up.

FIG. 68C illustrates processing steps for host and client initiatedwake-up with contention.

FIG. 69 illustrates the format of a Request VCP Feature Packet.

FIG. 70 illustrates the format of a VCP Feature Reply Packet.

FIG. 71 illustrates the format of a VCP Feature Reply List.

FIG. 72 illustrates the format of a Set VCP Feature Packet.

FIG. 73 illustrates the format of a Request Valid Parameter Packet.

FIG. 74 illustrates the format of a Valid Parameter Reply Packet.

FIG. 75 illustrates the format of a Scaled Video Stream CapabilityPacket.

FIG. 76 illustrates the format of a Scaled Video Stream Setup Packet.

FIG. 77 illustrates the format of a Scaled Video Stream AcknowledgementPacket.

FIG. 78 illustrates the format of a Scaled Video Stream Packet.

FIG. 79 illustrates the format of a Request Specific Status Packet.

FIG. 80 illustrates the format of a Valid Status Reply List Packet.

FIG. 81A illustrates the format of a Packet Processing Delay ParametersPacket.

FIG. 81B illustrates the format of a Delay Parameters List item.

FIG. 82 illustrates the format of a Personal Display Capability Packet.

FIG. 83 illustrates elements in the Points of Field Curvature List.

FIG. 84A illustrates the format of a Client Error Report Packet.

FIG. 84B illustrates the format of an Error Report List item.

FIG. 85 illustrates the format of a Client Identification Packet.

FIG. 86 illustrates the format of an Alternate Display CapabilityPacket.

FIG. 87 illustrates the format of a Register Access Packet.

FIG. 88A-88C illustrate use of two display buffers to reduce visibleartifacts.

FIG. 89 illustrates two buffers with display refresh faster than imagetransfer.

FIG. 90 illustrates two buffers with display refresh slower than imagetransfer.

FIG. 91 illustrates two buffers with display refresh much faster thanimage transfer.

FIG. 92 illustrates three buffers with display refresh faster than imagetransfer.

FIG. 93 illustrates three buffers with display refresh slower than imagetransfer.

FIG. 94 illustrates one buffer with display refresh faster than imagetransfer.

FIG. 95 illustrates host-client connection via daisy-chain and hub.

FIG. 96 illustrates client devices connected via a combination of hubsand daisy chains.

FIG. 97 illustrates a color map.

DETAILED DESCRIPTION

I. Overview

A general intent of the invention is to provide a Mobile Display DigitalInterface (MDDI), as discussed below, which results in or provides acost-effective, low power consumption, transfer mechanism that enableshigh- or very-high- speed data transfer over a short-range communicationlink between a host device and a client device, such as a displayelement, using a “serial” type of data link or channel. This mechanismlends itself to implementation with miniature connectors and thinflexible cables which are especially useful in connecting internal(interior to a housing or support frame) display or output elements ordevices, or input devices to a central controller or communicationelement or device. In addition, this connection mechanism is very usefulfor connecting external display elements or devices such as wearablemicro-displays (goggles or projectors) or other types of visual,audible, tactile information presentation devices to portable computers,wireless communication devices, or entertainment devices.

Although the terms Mobile and Display are associated with the naming ofthe protocol, it is to be understood that this is for convenience onlyin terms of having a standard name easily understood by those skilled inthe art working with the interface and protocol. As it will relate to aVESA standard and various applications of that standard. However, itwill be readily understood after a review of the embodiments presentedbelow that many non-mobile and non-display related applications willbenefit from application of this protocol, resulting interfacestructure, or transfer mechanism, and the MDDI label is not intended toimply any limitations to the nature or usefulness of the invention orits various embodiments.

An advantage of embodiments of the invention is that a technique isprovided for data transfer that is low in complexity, low cost, has highreliability, fits well within the environment of use, and is veryrobust, while remaining very flexible.

Embodiments of the invention can be used in a variety of situations tocommunicate or transfer large quantities of data, generally for audio,video, or multimedia applications from a host or source device wheresuch data is generated, manipulated, such as for transfer to specificdeices, or otherwise processed, or stored; to a client or receivingdevice, such as a video display or projection element, audio speakers,or other presentation device at a high rate. A typical application,which is discussed below, is the transfer of data from either a portablecomputer or a wireless telephone or modem to a visual display devicesuch as a small video screen or a wearable micro-display appliance, suchas in the form of goggles or helmets containing small projection lensesand screens, or from a host to client device within such components.That is, from a processor or controller to an internal screen or otherpresentation element, as well as from various internal, or externalinput devices employing a client to an internally located (collocatedwithin same device housing or support structure) host, or connectedthereto by a cable or conductors.

The characteristics or attributes of the MDDI are such that they areindependent of specific display or presentation technology. This is ahighly flexible mechanism for transferring data at a high rate withoutregards to the internal structure of that data, nor the functionalaspects of the data or commands it implements. This allows the timing ofdata packets being transferred to be adjusted to adapt to theidiosyncrasies of particular client devices, such as for unique displaydesires for certain devices, or to meet the requirements of combinedaudio and video for some A-V systems, or for certain input devices suchas joysticks, touch pads, and so forth. The interface is very displayelement or client device agnostic, as long as the selected protocol isfollowed. In addition, the aggregate serial link data, or data rate, canvary over several orders of magnitude which allows a communicationsystem or host device designer to optimize the cost, power requirements,client device complexity, and client device update rates.

The data interface is presented primarily for use in transferring largeamounts of high rate data over a “wired” signal link or small cable.However, some applications may take advantage of a wireless link aswell, including optical based links, provided it is configured to usethe same packet and data structures developed for the interfaceprotocol, and can sustain the desired level of transfer at low enoughpower consumption or complexity to remain practical.

II. Environment

A typical application can be seen in FIGS. 1A and 1B where a portable orlaptop computer 100 and wireless telephone or PDA device 102 are showncommunicating data with display devices 104 and 106, respectively, alongwith audio reproduction systems 108 and 112. In addition, FIG. 1A showspotential connections to a larger display or screen 114 or an imageprojector 116, which are only shown in one figure for clarity, but areconnectable to wireless device 102 as well. The wireless device can becurrently receiving data or have previously stored a certain amount ofmultimedia type data in a memory element or device for laterpresentation for viewing and/or hearing by an end user of the wirelessdevice. Since a typical wireless device is used for voice and simpletext communications most of the time, it has a rather small displayscreen and simple audio system (speakers) for communicating informationto the device 102 user.

Computer 100 has a much larger screen, but still inadequate externalsound system, and still falls short of other multimedia presentationdevices such as a high definition television, or movie screens. Computer100 is used for purposes of illustration and other types of processors,interactive video games, or consumer electronics devices can also beused with the invention. Computer 100 can employ, but is not limited toor by, a wireless modem or other built in device for wirelesscommunications, or be connected to such devices using a cable orwireless link, as desired.

This makes presentation of more complex or “rich” data a less than auseful or enjoyable experience. Therefore, the industry is developingother mechanisms and devices to present the information to end users andprovide a minimum level of desired enjoyment or positive experience.

As previously discussed above, several types of display devices have orare currently being developed for presenting information to end users ofdevice 100. For example, one or more companies have developed sets ofwearable goggles that project an image in front of the eyes of a deviceuser to present a visual display. When correctly positioned such deviceseffectively “project” a virtual image, as perceived by a user's eyes,that is much larger than the element providing the visual output. Thatis, a very small projection element allows the eye(s) of the user to“see” images on a much larger scale than possible with typical LCDscreens and the like. The use of larger virtual screen images alsoallows the use of much higher resolution images than possible with morelimited LCD screen displays. Other display devices could include, butare not limited to, small LCD screens or various flat panel displayelements, projection lenses and display drivers for projecting images ona surface, and so forth.

There may also be additional elements connected to or associated withthe use of wireless device 102 or computer 100 for presenting an outputto another user, or to another device which in turn transfers thesignals elsewhere or stores them. For example, data may be stored inflash memory, in optical form, for example using a writeable CD media oron magnetic media such as in a magnetic tape recorder and similardevices, for later use.

In addition, many wireless devices and computers now have built-in MP3music decoding capabilities, as well as other advanced sound decodersand systems. Portable computers utilize CD and DVD playback capabilitiesas a general rule, and some have small dedicated flash memory readersfor receiving pre-recorded audio files. The issue with having suchcapabilities is that digital music files promise a highly increasedfeature rich experience, but only if the decoding and playback processcan keep pace. The same holds true for the digital video files.

To assist with sound reproduction, audio reproduction systems 112, suchas external speakers are shown in FIG. 1A, which could also beaccompanied by addition elements such as sub-woofers, or“surround-sound” speakers for front and rear sound projection. At thesame time, speakers or earphones 108 are indicated as built-into thesupport frame or mechanism of micro-display device 106 of FIG. 1B. Aswould be known, other audio or sound reproduction elements can be usedincluding power amplification or sound shaping devices.

In any case, as discussed above, when one desires to transfer highquality or high resolution image data and high quality audio informationor data signals from a data source to an end user over one or morecommunication links 110, a high data rate is required. That is, transferlink 110 is clearly a potential bottleneck in the communication of dataas discussed earlier, and is limiting system performance, since currenttransfer mechanisms do not achieve the high data rates typicallydesired. As discussed above for example, for higher image resolutionssuch as 1024 by 1024 pixels, with color depths of 24-32 bits per pixeland at data rates of 30 fps, the data rates can approach rates in excessof 755 Mbps or more. In addition, such images may be presented as partof a multimedia presentation which includes audio data and potentiallyadditional signals dealing with interactive gaming or communications, orvarious commands, controls, or signals, further increasing the quantityor data and the data rate.

It is also clear that fewer cables or interconnections required forestablishing a data link, means that mobile devices associated with adisplay are easier to use, and more likely to be adopted by a largeruser base. This is especially true where multiple devices are commonlyused to establish a full audio-visual experience, and more especially asthe quality level of the displays and audio output devices increases.

In FIGS. 2A and 2B, small cut-away sections of the overall electronicdevices or products are used to show the location of one or moreinternal hosts and controllers in one portion of the device with ageneralized communication link, here 138 and 148, respectively,connecting them to the video display elements or screens having thecorresponding clients, across a rotating joint of some known type usedthroughout the electronics industry today. One can see that the amountof data involved in these transfers requires a large number ofconductors to comprise links 138 and 148. It is estimated that suchcommunication links are approaching 90 or more conductors in order tosatisfy today's growing needs for utilizing advanced color and graphicalinterfaces, display elements, on such devices because of the types ofparallel or other known interface techniques available for transferringsuch data.

Unfortunately, the higher data rates exceed current technology availablefor transferring data. Both in terms of the raw amount of data needingto be transferred per unit time, and in terms of manufacturing reliablecost effective physical transfer mechanisms.

What is needed is a technique, a structure, means or method, fortransferring data at higher rates for the data transfer link orcommunication path between presentation elements and the data source,which allows for consistently low(er) power, light weight, and as simpleand economical a cabling structure as possible. Applicants havedeveloped a new technique, or method and apparatus, to achieve these andother goals to allow an array of mobile, portable, or even fixedlocation devices to transfer data to desired displays, micro-displays,or audio transfer elements, at very high data rates, while maintaining adesired low power consumption, and complexity.

III. High Rate Digital Data Interface System Architecture

In order to create and efficiently utilize a new device interface, asignal protocol and system architecture has been formulated thatprovides a very high data transfer rate using low power signals. Theprotocol is based on a packet and common frame structure, or structureslinked together to form a protocol for communicating a pre-selected setof data or data types along with a command or operational structureimposed on the interface.

A. Overview

The devices connected by or communicating over the MDDI link are calledthe host and client, with the client typically being a display device ofsome type, although other output and input devices are contemplated.Data from the host to the display travels in the forward direction(referred to as forward traffic or link), and data from the client tothe host travels in the reverse direction (reverse traffic or link), asenabled by the host. This is illustrated in the basic configurationshown in FIG. 3. In FIG. 3, a host 202 is connected to a client 204using a bi-directional communication channel 206 which is illustrated ascomprising a forward link 208 and a reverse link 210. However, thesechannels are formed by a common set of conductors whose data transfer iseffectively switched between the forward or reverse link operations.This allows for greatly reduced numbers of conductors, immediatelyaddressing one of the many problems faced with current approaches tohigh speed data transfer in low power environments such as for mobileelectronic devices.

As discussed elsewhere, the host comprises one of several types ofdevices that can benefit from using the present invention. For example,host 202 could be a portable computer in the form of a handheld, laptop,or similar mobile computing device. It could also be a Personal DataAssistant (PDA), a paging device, or one of many wireless telephones ormodems. Alternatively, host 202 could be a portable entertainment orpresentation device such as a portable DVD or CD player, or a gameplaying device.

Furthermore, the host can reside as a host device or control element ina variety of other widely used or planned commercial products for whicha high speed communication link is desired with a client. For example, ahost could be used to transfer data at high rates from a video recordingdevice to a storage based client for improved response, or to a highresolution larger screen for presentations. An appliance such as arefrigerator that incorporates an onboard inventory or computing systemand/or Bluetooth connections to other household devices, can haveimproved display capabilities when operating in an internet or Bluetoothconnected mode, or have reduced wiring needs for in-the-door displays (aclient) and keypads or scanners (client) while the electronic computeror control systems (host) reside elsewhere in the cabinet. In general,those skilled in the art will appreciate the wide variety of modernelectronic devices and appliances that may benefit from the use of thisinterface, as well as the ability to retrofit older devices with higherdata rate transport of information utilizing limited numbers ofconductors available in either newly added or existing connectors orcables.

At the same time, client 204 could comprise a variety of devices usefulfor presenting information to an end user, or presenting informationfrom a user to the host. For example, a micro-display incorporated ingoggles or glasses, a projection device built into a hat or helmet, asmall screen or even holographic element built into a vehicle, such asin a window or windshield, or various speaker, headphone, or soundsystems for presenting high quality sound or music. Other presentationdevices include projectors or projection devices used to presentinformation for meetings, or for movies and television images. Anotherexample would be the use of touch pads or sensitive devices, voicerecognition input devices, security scanners, and so forth that may becalled upon to transfer a significant amount of information from adevice or system user with little actual “input” other than touch orsound from the user. In addition, docking stations for computers and carkits or desk-top kits and holders for wireless telephones may act asinterface devices to end users or to other devices and equipment, andemploy either clients (output or input devices such as mice) or hosts toassist in the transfer of data, especially where high speed networks areinvolved.

However, those skilled in the art will readily recognize that thepresent invention is not limited to these devices, there being manyother devices on the market, and proposed for use, that are intended toprovide end users with high quality images and sound, either in terms ofstorage and transport or in terms of presentation at playback. Thepresent invention is useful in increasing the data throughput betweenvarious elements or devices to accommodate the high data rates neededfor realizing the desired user experience.

The inventive MDDI and communication signal protocol may be used tosimplify the interconnect between a host processor, controller, orcircuit component (for example), and a display within a device or devicehousing or structure (referred to as an internal mode) in order toreduce the cost or complexity and associated power and controlrequirements or constraints of these connections, and to improvereliability, not just for connection to or for external elements,devices, or equipment (referred to as an external mode).

The aggregate serial link data rate on each signal pair used by thisinterface structure can vary over many orders of magnitude, which allowsa system or device designer to easily optimize cost, power,implementation complexity, and the display update rate for a givenapplication or purpose. The attributes of MDDI are independent ofdisplay or other presentation device (target client) technology. Thetiming of data packets transferred through the interface can be easilyadjusted to adapt to idiosyncrasies of particular clients such asdisplay devices, sound systems, memory and control elements, or combinedtiming requirements of audio-video systems. While this makes it possibleto have a system with a very small power consumption, it is not arequirement of the various clients to have frame buffers in order tomake use of the MDDI protocol at least at some level.

B. Interface Types

The MDDI is contemplated as addressing at least fours, and potentiallymore, somewhat distinct physical types of interfaces found in thecommunications and computer industries. These are labeled simply as Type1, Type 2, Type 3, and Type 4, although other labels or designations maybe applied by those skilled in the art depending upon the specificapplications they are used for or industry they are associated with. Forexample, simple audio systems use fewer connections than more complexmultimedia systems, and may reference features such as “channels”differently, and so forth.

The Type 1 interface is configured as a 6-wire, or other type ofconductor or conductive element, interface which makes it suitable formobile or wireless telephones, PDAs, electronic games, and portablemedia players, such as CD players, or MP3 players, and similar devicesor devices used on similar types of electronic consumer technology. Inone embodiment, a an interface can be configured as an 8-wire(conductor) interface which is more suitable for laptop, notebook, ordesktop personal computers and similar devices or applications, notrequiring rapid data updates and which do not have a built-in MDDI linkcontroller. This interface type is also distinguishable by the use of anadditional two-wire Universal Serial Bus (USB) interface, which isextremely useful in accommodating existing operating systems or softwaresupport found on most personal computers.

Type 2, Type 3, and Type 4 interfaces are suitable for high performanceclients or devices and use larger more complex cabling with additionaltwisted-pair type conductors to provide the appropriate shielding andlow loss transfers for data signals.

The Type 1 interface passes signals which can comprise display, audio,control, and limited signaling information, and is typically used formobile clients or client devices that do not require high-resolutionfull-rate video data. A Type 1 interface can easily support SVGAresolution at 30 fps plus 5.1 channel audio, and in a minimumconfiguration might use only three wire pairs total, two pairs for datatransmission and one pair for power transfer. This type of interface isprimarily intended for devices, such as mobile wireless devices, where aUSB host is typically not available within the such device forconnection and transfer of signals. In this configuration, the mobilewireless device is a MDDI host device, and acts as the “master” thatcontrols the communication link from the host, which generally sendsdata to the client (forward traffic or link) for presentation, displayor playback.

In this interface, a host enables receipt of communication data at thehost from the client (reverse traffic or link) by sending a specialcommand or packet type to the client that allows it to take over the bus(link) for a specified duration and send data to the host as reversepackets. This is illustrated in FIG. 4, where a type of packet referredto as an encapsulation packet (discussed below) is used to accommodatethe transfer of reverse packets over the transfer link, creating thereverse link. The time interval allocated for the host to poll theclient for data is pre-determined by the host, and is based on therequirements of each specified application. This type of half-duplexbi-directional data transfer is especially advantageous where a USB portis not available for transfer of information or data from the client.

High-performance displays capable of HDTV type or similar highresolutions require around 1.5 Gbps rate data streams in order tosupport full-motion video. The Type 2 interface supports high data ratesby transmitting 2 bits in parallel, the Type 3 by transmitting 4 bits inparallel, and the Type 4 interface transfers 8 bits in parallel. Type 2and Type 3 interfaces use the same cable and connector as Type 1 but canoperate at twice and four times the data rate to supporthigher-performance video applications on portable devices. A Type 4interface is suited for very high performance clients or displays andrequires a slightly larger cable that contains additional twisted-pairdata signals.

The protocol used by the MDDI allows each Type 1, 2, 3, or 4 host togenerally communicate with any Type 1, 2, 3, or 4 client by negotiatingwhat is the highest data rate possible that can be used. Thecapabilities or available features of what can be referred to as theleast capable device is used to set the performance of the link. As arule, even for systems where the host and client are both capable usingType 2, Type 3, or Type 4 interfaces, both begin operation as a Type 1interface. The host then determines the capability of the target client,and negotiates a hand-off or reconfiguration operation to either Type 2,Type 3, or Type 4 mode, as appropriate for the particular application.

It is generally possible for the host to use the proper link-layerprotocol (discussed further below) and step down or again reconfigureoperation at generally any time to a slower mode to save power or tostep up to a faster mode to support higher speed transfers, such as forhigher resolution display content. For example, a host may changeinterface types when the system switches from a power source such as abattery to AC power, or when the source of the display media switches toa lower or higher resolution format, or a combination of these or otherconditions or events may be considered as a basis for changing aninterface type, or transfer mode.

It is also possible for a system to communicate data using one mode inone direction and another mode in another direction. For example, a Type4 interface mode could be used to transfer data to a display at a highrate, while a Type 1 mode is used when transferring data to a hostdevice from peripheral devices such as a keyboard or a pointing device.It will be appreciated by one skilled in the art that hosts and clientsmay communicate outgoing data at different rates.

Often, users of the MDDI protocol may distinguish between an “external”mode and an “internal” mode. An external mode describes the use of theprotocol and interface to connect a host in one device to a clientoutside of that device that is up to about 2 meters or so from the host.In this situation, the host may also send power to the external clientso that both devices can easily operate in a mobile environment. Aninternal mode describes when the host is connected to a client containedinside the same device, such as within a common housing or support frameor structure of some kind. An example would be applications within awireless phone or other wireless device, or a portable computer orgaming device where the client is a display or display driver, or aninput device such as a keypad or touch-pad, or a sound system, and thehost is a central controller, graphics engine, or CPU element. Since aclient is located much closer to the host in internal mode applicationsas opposed to external mode applications, there are generally norequirements discussed for the power connection to the client in suchconfigurations.

C. Physical Interface Structure

The general disposition of a device or link controller for establishingcommunications between host and client devices is shown in FIGS. 5 and6. In FIGS. 5 and 6, a MDDI link controller 402 and 502 is showninstalled in a host device 202 and a MDDI link controller 404 and 504 isshown installed in a client device 204. As before, host 202 is connectedto a client 204 using a bidirectional communication channel 406comprising a series of conductors. As discussed below, both the host andclient link controllers can be manufactured as an integrated circuitusing a single circuit design that can be set, adjusted, or programmedto respond as either a host controller (driver) or a client controller(receiver). This provides for lower costs due to larger scalemanufacturing of a single circuit device.

In FIG. 6, a MDDI link controller 502 is shown installed in a hostdevice 202′ and a MDDI link controller 504 is shown installed in aclient device 204′. As before, host 202′ is connected to a client 204′using a bi-directional communication channel 506 comprising a series ofconductors. As discussed before, both the host and client linkcontrollers can be manufactured using a single circuit design.

Signals passed between a host and a client, such as a display device,over the MDDI link, or the physical conductors used, are alsoillustrated in FIGS. 5 and 6. As seen in FIGS. 5 and 6, the primary pathor mechanism for transferring data through the MDDI uses data signalslabeled as MDDI_Data0+/− and MDDI_Stb+/−. Each of these are low voltagedata signals that are transferred over a differential pair of wires in acable. There is only one transition on either the MDDI_Data0 pair or theMDDI_Stb pair for each bit sent over the interface. This is a voltagebased transfer mechanism not current based, so static currentconsumption is nearly zero. The host drives the MDDI_Stb signals to theclient display.

While data can flow in both the forward and reverse directions over theMDDI_Data pairs, that is, it is a bi-directional transfer path, the hostis the master or controller of the data link. The MDDI_Data0 andMDDI_Stb signal paths are operated in a differential mode to maximizenoise immunity. The data rate for signals on these lines is determinedby the rate of the clock sent by the host, and is variable over a rangeof about 1 Kbps up to 400 Mbps or more.

The Type 2 interface contains one additional data pair or conductors orpaths beyond that of the Type 1, referred to as MDDI_Data1+/−. The Type3 interface contains two additional data pairs or signal paths beyondthat of the Type 2 interface referred to as MDDI_Data2+/−, andMDDI_Data3+/−. The Type 4 interface contains four more data pairs orsignal paths beyond that of the Type 3 interface referred to as:MDDI_data4+/−, MDDI_Data5+/−, MDDI_Data6+/−, and MDDI_Data7+/−,respectively. In each of the above interface configurations, a host cansend power to the client or display using the wire-pair or signalsdesignated as HOST_Pwr and HOST_Gnd. As discussed further below, powertransfer can also be accommodated, if desired, in some configurations onthe MDDI_data4+/−, MDDI_Data5+/−, MDDI_Data6+/−, or MDDI_Data7+/−conductors when an interface “Type” is being used that employs fewerconductors than are available or present for the other modes. This Powertransfer is generally employed for external modes, there generally beingno need for internal modes, although some applications may differ.

A summary of the signals passed between the host and client (display)over the MDDI link for various modes are illustrated in Table I, below,in accordance with the interface type.

TABLE I Type 1 Type 2 Type 3 Type 4 HOST_Pwr/Gnd HOST_Pwr/GndHOST_Pwr/Gnd HOST_Pwr/Gnd MDDI_Stb+/− MDDI_Stb+/− MDDI_Stb+/−MDDI_Stb+/− MDDI_Data0+/− MDDI_Data0+/− MDDI_Data0+/− MDDI_Data0+/−MDDI_Data1+/− MDDI_Data1+/− MDDI_Data1+/− MDDI_Data2+/− MDDI_Data2+/−MDDI_Data3+/− MDDI_Data3+/− Optional Pwr Optional Pwr Optional PwrMDDI_Data4+/− Optional Pwr Optional Pwr Optional Pwr MDDI_Data5+/−Optional Pwr Optional Pwr Optional Pwr MDDI_Data6+/− Optional PwrOptional Pwr Optional Pwr MDDI_Data7+/−

Also note that the HOST_Pwr/Gnd connections for transfer from the hostare provided generally for external modes. Internal applications ormodes of operation generally have clients that draw power directly fromother internal resources, and do not use MDDI to control powerdistribution, as would be apparent to one skilled in the art, so suchdistribution is not discussed in further detail here. However, it iscertainly possible to allow power to be distributed through the MDDI toallow for certain kinds of power control, synchronization, orinterconnection convenience, for example, as would be understood by oneskilled in the art.

Cabling generally used to implement the above structure and operation isnominally on the order of 1.5 meters in length, generally 2 meters orless, and contains three twisted pairs of conductors, each in turn beingmulti-strand 30 AWG wire. A foil shield covering is wrapped or otherwiseformed above the three twisted pairs, as an additional drain wire. Thetwisted pairs and shield drain conductor terminate in the clientconnector with the shield connected to the shield for the client, andthere is an insulating layer, covering the entire cable, as would bewell known in the art. The wires are paired as: HOST_Gnd with HOST_Pwr;MDDI_Stb+ with MDDI_Stb−; MDDI_Data0+ with MDDI_Data0−; MDDI_Data1+ withMDDI_Data1−; and so forth. However, a variety of conductors and cablingcan be used, as would be understood in the art, to implement theembodiments of the invention, depending upon specific applications. Forexample, heavier outside coatings or even metallic layers may be used toprotect the cable in some applications, while thinner, flatterconductive ribbon type structures may be well suited to otherapplications.

D. Data Types and Rates

To achieve a useful interface for a full range of user experiences andapplications, the Mobile Digital Data Interface (MDDI) provides supportfor a variety of clients and display information, audio transducers,keyboards, pointing devices, and many other input or output devices thatmight be integrated into or working in concert with a mobilecommunication, computation, or display device, along with controlinformation, and combinations thereof. The MDDI is designed to be ableto accommodate a variety of potential types of streams of datatraversing between the host and client in either the forward or reverselink directions using a minimum number of cables or conductors. Bothisochronous streams and asynchronous stream (updates) are supported.Many combinations of data types are possible as long as the aggregatedata rate is less than or equal to the maximum desired MDDI link rate,which is limited by the maximum serial rate and number of data pairsemployed. These could include, but are not limited to, those itemslisted in Tables II and III below.

TABLE II Transferring from Host to Client isochronous video data 720 ×480, 12 bit, 30 f/s ~124.5 Mbps isochronous stereo audio data 44.1 kHz,16 bit, stereo ~1.4 Mbps asynchronous graphics data 800 × 600, 12 bit,~115.2 Mbps 10 f/s, stereo asynchronous control Minimum <<1.0 Mbps

TABLE III Transferring from Client to Host isochronous voice data 8 kHz,8 bit <<1.0 Mbps isochronous video data 640 × 480, 12 ~88.5 Mbps bit, 24f/s asynchronous status, minimum <<1.0 Mbps user input, etc.

The interface is not fixed but extensible so that it can support thetransfer of a variety of information “types” which includes user-defineddata, for future system flexibility. Specific examples of data to beaccommodated are: full-motion video, either in the form of full orpartial screen bitmap fields or compressed video; static bitmaps at lowrates to conserve power and reduce implementation costs; PCM orcompressed audio data at a variety of resolutions or rates; pointingdevice position and selection, and user-definable data for capabilitiesyet to be defined. Such data may also be transferred along with controlor status information to detect device capability or set operatingparameters.

Embodiments of the invention advance the art for use in data transfersthat include, but are not limited to: watching a movie (video displayand audio); using a personal computer with limited personal viewing(graphics display, sometimes combined with video and audio); playing avideo game on a PC, console, or personal device (motion graphicsdisplay, or synthetic video and audio); “surfing” the Internet, usingdevices in the form of a video phone (bidirectional low-rate video andaudio), a camera for still digital pictures, or a camcorder forcapturing digital video images; using a phone, computer, or PDA dockedwith a projector to give a presentation or docked with a desktop dockingstation connected to a video monitor, keyboard, and mouse; and forproductivity enhancement or entertainment use with cell phones, smartphones, or PDAs, including wireless pointing devices and keyboard data.

The high speed data interface as discussed below is presented in termsof providing large amounts of A-V type data over a communication ortransfer link which is generally configured as a wire-line or cable typelink. However, it will be readily apparent that the signal structure,protocols, timing, or transfer mechanism could be adjusted to provide alink in the form of an optical or wireless media, if it can sustain thedesired level of data transfer.

The MDDI signals use a concept known as the Common Frame Rate (CFR) forthe basic signal protocol or structure. The idea behind using of aCommon Frame Rate is to provide a synchronization pulse for simultaneousisochronous data streams by sending Sub-frame Header Packets at a ratethat can be used to derive clocks or frame timing for multiple streams.The rate at which Sub-frame Header Packets are sent is the Common FrameRate. A client device can use this Common Frame Rate as a timereference. A low CFR increases channel efficiency by decreasing overheadto transmit the sub-frame header. On the other hand, a high CFRdecreases the latency, and allows a smaller elastic data buffer foraudio samples. The CFR of the present inventive interface is dynamicallyprogrammable and may be set at one of many values that are appropriatefor the isochronous streams used in a particular application. That is,the CF value is selected to best suit the given client and hostconfiguration, as desired.

The number of bytes generally required per sub-frame, which isadjustable or programmable, for isochronous data steams that are mostlikely to be used with an application, such as for a video ormicro-display are shown in Table IV.

TABLE IV Common Frame Rate (CFR) = 300 Hz Bytes/ Frame Rate Sub- X Y BitRate Channel (Mbps) frame Computer Game 720 480 24 30 1 248.832 103680Computer Graphics 800 600 24 10 1 115.200 48000 Video 640 480 12 29.97or 30 1 221.184 92160 CD Audio 1 1 16 44100 2 1.4112 588 Voice 1 1 88000 1 0.064 26-2/3

Fractional counts of bytes per sub-frame are easily obtained using asimple programmable M/N counter structure. For example, a count of26⅔bytes per sub-frame is implemented by transferring 2 sub-framescontaining 27 bytes each followed by one sub-frame containing 26 bytes.A smaller CFR may be selected to produce an integer number of bytes persub-frame. However, generally speaking, to implement a simple M/Ncounter in hardware should require less area within an integratedcircuit chip or electronic module used to implement part or all ofembodiments of the invention than the area needed for a larger audiosample FIFO buffer.

An exemplary application that illustrates the impact of different datatransfer rates and data types is a Karaoke system. For Karaoke, a systemwhere an end user, or users, sings along with a music video program.Lyrics of the song are displayed somewhere on, typically at the bottomof, a screen so the user knows the words to be sung, and roughly thetiming of the song. This application requires a video display withinfrequent graphics updates, and mixing of the user's voice, or voices,with a stereo audio stream.

If one assumes a common frame rate of 300 Hz, then each sub-frame willconsist of: 92,160 bytes of video content and 588 bytes of audio content(based on 147 16-bit samples, in stereo) over the forward link to theclient, and an average of 26.67 (26⅔) bytes of voice are sent back froma microphone to the mobile Karaoke machine. Asynchronous packets aresent between the host and the client, possibly a head mounted display.This includes the bottom quarter-screen height being updated with lyrictext at 1/30^(th) of a second intervals or periods, and othermiscellaneous control and status commands sent in sub-frames when lyrictext is not being updated.

Table V, shows how data is allocated within a sub-frame for the Karaokeexample. The total rate being used is selected to be about 279 Mbps. Aslightly higher rate of 280 Mbps allows about another 400 bytes of dataper sub-frame to be transferred which allows the use of occasionalcontrol and status messages.

TABLE V Overhead Bytes Media Bytes Element Rate per sub-frame persub-frame Music Video at 640 × 480 2 * 28 = 56 92160 pixels and 30 fpsLyric Text at 640 × 120 28 23040 pixels and 1 fps Updated in 10sub-frames, 1/30 sec. CD Audio at 44,100 sps, 2 * 16 = 32 588 stereo,16-bit Voice at 8,000 sps, mono, 28 + 8 + 8 + 26.67 8-bit (4 * 16) + (27max) (3 * 27) = 125 Sub-frame Header 22 Total Bytes/CF 263 115815 TotalRate (Mbps) (263 + 115815) * 8 * 300 = 278.5872III.(Continued) High Rate Digital Data Interface System Architecture

E. Link Layer

Data transferred using the MDDI high-speed serial data signals consistsof a stream of time-multiplexed packets that are linked one after theother. Even when a transmitting device has no data to send, a MDDI linkcontroller generally automatically sends filler packets, thus,maintaining a stream of packets. The use of a simple packet structureensures reliable isochronous timing for video and audio signals or datastreams.

Groups of packets are contained within signal elements or structuresreferred to as sub-frames, and groups of sub-frames are contained withinsignal elements or structures referred to as a media-frame. A sub-framecontains one or more packets, depending on their respective size anddata transfer uses, and a media-frame contains one more sub-frames. Thelargest sub-frame provided by the protocol employed by the embodimentspresented here is on the order of 2³²−1 or 4,294,967,295 bytes, and thelargest media-frame size then becomes on the order of 2¹⁶−1 or 65,535sub-frames.

A special sub-frame header packet contains a unique identifier thatappears at the beginning of each sub-frame, as is discussed below. Thatidentifier is also used for acquiring the frame timing at the clientdevice when communication between the host and client is initiated. Linktiming acquisition is discussed in more detail below.

Typically, a display screen is updated once per media-frame whenfull-motion video is being displayed. The display frame rate is the sameas the media-frame rate. The link protocol supports full-motion videoover an entire display, or just a small region of full-motion videocontent surrounded by a static image, depending on the desiredapplication. In some low-power mobile applications, such as viewing webpages or email, the display screen may only need to be updatedoccasionally. In those situations, it is advantageous to transmit asingle sub-frame and then shut down or inactivate the link to minimizepower consumption. The interface also supports effects such as stereovision, and handles graphics primitives.

Sub-frames allow a system to enable the transmission of high-prioritypackets on a periodic basis. This allows simultaneous isochronousstreams to co-exist with a minimal amount of data buffering. This is oneadvantage embodiments provide to the display process, allowing multipledata streams (high speed communication of video, voice, control, status,pointing device data, etc.) to essentially share a common channel. Ittransfers information using relatively few signals. It also enablesdisplay-technology-specific actions to exist, such as horizontal syncpulses and blanking intervals for a CRT monitor, or for otherclient-technology-specific actions.

F. Link Controller

The MDDI link controller shown in FIGS. 5 and 6 is manufactured orassembled to be a completely digital implementation with the exceptionof the differential line receivers which are used to receive MDDI dataand strobe signals. However, even the differential line drivers andreceivers can be implemented in the same digital integrated circuitswith the link controller, such as when making a CMOS type IC. No analogfunctions or phase lock loops (PLLs) are required for bit recovery or toimplement the hardware for the link controller. The host and client linkcontrollers contain very similar functions, with the exception of theclient interface which contains a state machine for linksynchronization. Therefore, the embodiments of the invention allow thepractical advantage of being able to create a single controller designor circuit that can be configured as either a host or client, which canreduce manufacturing costs for the link controllers, as a whole.

IV. Interface Link Protocol

A. Frame Structure

The signal protocol or frame structure used to implement the forwardlink communication for packet transfer is illustrated in FIG. 7. Asshown in FIG. 7, information or digital data is grouped into elementsknown as packets. Multiple packets are in turn grouped together to formwhat are referred to as a “sub-frame,” and multiple sub-frames are inturn grouped together to form a “media” frame. To control the formationof frames and transfer of sub-frames, each sub-frame begins with aspecially predefined packet referred to as a Sub-frame Header Packet(SHP).

The host device selects the data rate to be used for a given transfer.This rate can be changed dynamically by the host device based on boththe maximum transfer capability of the host, or the data being retrievedfrom a source by the host, and the maximum capability of the client, orother device the data is being transferred to.

A recipient client device designed for, or capable of, working with theMDDI or inventive signal protocol is able to be queried by the host todetermine the maximum, or current maximum, data transfer rate it canuse, or a default slower minimum rate may be used, as well as useabledata types and features supported. This information could be transferredusing a Client Capability Packet (DCP), as discussed further below. Theclient display device is capable of transferring data or communicatingwith other devices using the interface at a pre-selected minimum datarate or within a minimum data rate range, and the host will perform aquery using a data rate within this range to determine the fullcapabilities of the client devices.

Other status information defining the nature of the bitmap and videoframe-rate capabilities of the client can be transferred in a statuspacket to the host so that the host can configure the interface to be asefficient or optimal as practical, or desired within any systemconstraints.

The host sends filler packets when there are no (more) data packets tobe transferred in the present sub-frame, or when the host cannottransfer at a rate sufficient to keep pace with the data transmissionrate chosen for the forward link. Since each sub-frame begins with asub-frame header packet, the end of the previous sub-frame contains apacket (most likely a filler packet) the exactly fills the previoussub-frame. In the case of a lack of room for data bearing packets perse, a filler packet will most likely be the last packet in a sub-frame,or at the end of a next previous sub-frame and before a sub-frame headerpacket. It is the task of the control operations in a host device toensure that there is sufficient space remaining in a sub-frame for eachpacket to be transmitted within that sub-frame. At the same time, once ahost device initiates the sending of a data packet, the host must beable to successfully complete a packet of that size within a framewithout incurring a data under-run condition.

In one aspect of embodiments, sub-frame transmission has two modes. Onemode is a periodic sub-frame mode, or periodic timing epochs, used totransmit live video and audio streams. In this mode, the Sub-framelength is defined as being non-zero. The second mode is an asynchronousor non-periodic mode in which frames are used to provide bitmap data toa client when new information is available. This mode is defined bysetting the sub-frame length to zero in the Sub-frame Header Packet.When using the periodic mode, sub-frame packet reception may commencewhen the client has synchronized to the forward link frame structure.This corresponds to the “in sync” states defined according to the statediagram discussed below with respect to FIG. 49 or FIG. 63. In theasynchronous non-periodic sub-frame mode, reception commences after thefirst Sub-frame Header packet is received.

B. Overall Packet Structure

The format or structure of packets used to formulate the communicationor signal protocol, or method or means for transferring data,implemented by the embodiments are presented below, keeping in mind thatthe interface is extensible and additional packet structures can beadded as desired. The packets are labeled as, or divided into, different“packet types” in terms of their function in the interface, that is,commands, information, value, or data they transfer or are associatedwith. Therefore, each packet type denotes a pre-defined packet structurefor a given packet which is used in manipulating the packets and databeing transferred. As will be readily apparent, the packets may havepre-selected lengths or have variable or dynamically changeable lengthsdepending on their respective functions. The packets could also beardiffering names, although the same function is still realized, as canoccur when protocols are changed during acceptance into a standard. Thebytes or byte values used in the various packets are configured asmulti-bit (8- or 16-bit) unsigned integers. A summary of the packetsbeing employed along with their “type” designations, listed in typeorder, is shown in Tables VI-1 through VI-4.

Each table represents a general “type” of packet within the overallpacket structure for ease in illustration and understanding. There is nolimitation or other impact implied or being expressed for the inventionby these groupings, and the packets can be organized in many otherfashions as desired. The direction in which transfer of a packet isconsidered valid is also noted.

TABLE VI-1 Link Control Packets Packet Valid in Valid in Packet NameType Forward Reverse Sub-frame Header Packet 15359 x Filler Packet 0 x xReverse Link Encapsulation 65 x Packet Link Shutdown Packet 69 x DisplayPower State Packet 75 x Forward Audio Channel Enable 78 x Packet PerformType Handoff Packet 77 x Round Trip Delay Measurement 82 x PacketForward Link Skew Calibration 83 x Packet

TABLE VI-2 Basic Media Stream Packets Packet Valid in Valid in PacketName Type Forward Reverse Video Stream Packet 16 x x Audio Stream Packet32 x x Reserved Stream Packets    1–15, x x   18–31,  33–55 User-DefinedStream  56–63 x x Packets Color Map Packet 64 x x Reverse Audio Sample79 x Rate Packet Transparent Color 81 x Enable Packet

TABLE VI-3 Client Status and Control Packets Packet Valid in Valid inPacket Name Type Forward Reverse Client Capability Packet 66 x KeyboardData Packet 67 x x Pointing Device Data 68 x x Packet Client Request and70 x Status Packet Digital Content Protection 80 x x Overhead PacketRequest VCP Feature Packet 128 x VCP Feature Reply Packet 129 x Set VCPFeature Packet 130 x Request Valid Parameter 131 x Packet ValidParameter Reply 132 x Packet Request Specific Status 138 x Packet ValidStatus Reply List 139 x Packet Packet Processing Delay 140 x ParametersPacket Personal Display Capability 141 x Packet Client Error ReportPacket 142 x Scaled Video Stream 143 x Capability Packet ClientIdentification Packet 144 x Alternate Display Capability 145 x PacketRegister Access Packet 146 x x

TABLE VI-4 Advanced Graphic and Display Packets Packet Valid in Valid inPacket Name Type Forward Reverse Bit Block Transfer Packet 71 x BitmapArea Fill Packet 72 x Bitmap Pattern Fill Packet 73 x Read Frame BufferPacket 74 x Scaled Video Stream 143 x Capability Packet Scaled VideoStream 136 x Setup Packet Scaled Video Stream 137 x AcknowledgementPacket Scaled Video Stream Packet 18 x

Something that is clear from other discussions within this text is thatthe Sub-frame Header, Filler, Reverse Encapsulation, Link Shutdown,Client Capability, and Client Request and Status Packets are eachconsidered very important to, or even required in many embodiments ofcommunication interfaces for External Mode operation. However ReverseEncapsulation, Link Shutdown, Client Capability, and Client Request andStatus Packets, can be or are more likely to be considered optional forInternal Mode operation. This creates yet another type of MDDI protocolwhich allows communication of data at very high speeds with a reducedset of communications packets, and corresponding simplification ofcontrol and timing.

Packets have a common basic structure or overall set of minimum fieldscomprising a Packet Length field, a Packet Type field, Data Bytesfield(s), and a CRC field, which is illustrated in FIG. 8. As shown inFIG. 8, the Packet Length field contains information, in the form of amulti-bit or -byte value, that specifies the total number of bits in thepacket, or its length between the packet length field and the CRC field.In one embodiment, the packet length field contains a 16-bit or 2-bytewide, unsigned integer, that specifies the packet length. The PacketType field is another multi-bit field which designates the type ofinformation that is contained within the packet. In an exemplaryembodiment, this is an 16-bit or 2-byte wide value, in the form of an16-bit unsigned integer, and specifies such data types as displaycapabilities, handoff, video or audio streams, status, and so forth.

A third field is the Data Bytes field, which contains the bits or databeing transferred or sent between the host and client devices as part ofthat packet. The format of the data is defined specifically for eachpacket type according to the specific type of data being transferred,and may be separated into a series of additional fields, each with itsown format requirements. That is, each packet type will have a definedformat for this portion or field. The last field is the CRC field whichcontains the results of a 16-bit cyclic redundancy check calculated overthe Data Bytes, Packet Type, and Packet Length fields, which is used toconfirm the integrity of the information in the packet. In other words,calculated over the entire packet except for the CRC field itself. Theclient generally keeps a total count of the CRC errors detected, andreports this count back to the host in the Client Request and StatusPacket (see further below).

Generally, these field widths and organization are designed to keep2-byte fields aligned on an even byte boundary, and 4-byte fieldsaligned on 4-byte boundaries. This allows packet structures to be easilybuilt in a main memory space of, or associated with, a host and a clientwithout violating the data-type alignment rules encountered for most ortypically used processors or control circuits.

During transfer of the packets, fields are transmitted starting with theLeast Significant Bit (LSB) first and ending with the Most SignificantBit (MSB) transmitted last. Parameters that are more than one byte inlength are transmitted using the least significant byte first, whichresults in the same bit transmission pattern being used for a parametergreater than 8 bits in length, as is used for a shorter parameter wherethe LSB is transmitted first. The data fields of each packet aregenerally transmitted in the order that they are defined in thesubsequent sections below, with the first field listed being transmittedfirst, and the last field described being transmitted last. The data onthe MDDI_Data0 signal path is aligned with bit ‘0’ of bytes transmittedon the interface in any of the modes, Type 1, Type 2, Type 3, or Type-4.

When manipulating data for displays, the data for arrays of pixels aretransmitted by rows first, then columns, as is traditionally done in theelectronics arts. In other words, all pixels that appear in the same rowin a bit map are transmitted in order with the left-most pixeltransmitted first and the right-most pixel transmitted last. After theright-most pixel of a row is transmitted then the next pixel in thesequence is the left-most pixel of the following row. Rows of pixels aregenerally transmitted in order from top to bottom for most displays,although other configurations can be accommodated as needed.Furthermore, in handling bitmaps, the conventional approach, which isfollowed here, is to define a reference point by labeling the upper-leftcorner of a bitmap as location or offset “0,0.” The X and Y coordinatesused to define or determine a position in the bitmap increase in valueas one approaches the right and bottom of the bitmap, respectively. Thefirst row and first column (upper left corner of an image) start with anindex value of zero. The magnitude of the X coordinate increases towardthe right side of the image, and the magnitude of the Y coordinateincreases toward the bottom of the image as viewed by the user of thedisplay.

A display window is the visible portion of a bitmap, the portion of thepixels in the bitmap that can be seen by the user on the physicaldisplay medium. It is often the case that the display window and thebitmap are the same size. The upper-left corner of a display windowalways displays bitmap pixel location ‘0,0’. The width of the displaywindow corresponds to the X axis of the bitmap, and the display windowwidth for this embodiment is less than or equal to the width of thecorresponding bitmap. The height of the window corresponds to the Y axisof the bitmap, and the display window height for this embodiment is lessthan or equal to the height of the corresponding bitmap. The displaywindow itself is not addressable in the protocol because it is onlydefined as the visible portion of a bitmap.

The relationship between a bitmaps and display windows is well known inthe computer, electronic art, Internet communication, and otherelectronics related arts. Therefore, no further discussion orillustration of these principles is provided here.

C. Packet Definitions

1. Sub-Frame Header Packet

The Sub-Frame Header packet is the first packet of every sub-frame, andhas a basic structure as illustrated in FIG. 9. The Sub-Frame HeaderPacket is used for host-client synchronization, every host should beable to generate this packet, while every client should be able toreceive and interpret this packet. As can be seen in one embodiment inFIG. 9, this type of packet is structured to have Packet Length, PacketType, Unique Word, Reserved 1, Sub-Frame Length, Protocol Version,Sub-Frame Count, and Media-frame Count fields, generally in that order.In one embodiment, this type of packet is generally identified as a Type15359 (0x3bff hexadecimal) packet and uses a pre-selected fixed lengthof 20 bytes, not including the packet length field.

The Packet Type field and the Unique Word field each use a 2 byte value(16-bit unsigned integer). The 4-byte combination of these two fieldstogether forms a 32-bit unique word with good autocorrelation. In oneembodiment, the actual unique word is 0x005a3bff, where the lower 16bits are transmitted first as the Packet Type, and the most significant16 bits are transmitted afterward.

The Reserved 1 field contains 2 bytes that are reserved space for futureuse, and is generally configured at this point with all bits set tozero. One purpose of this field is to cause subsequent 2-byte fields toalign to a 16-bit word address and cause 4-byte fields to align to a32-bit word address. The least significant byte is reserved to indicatewhether or not a host is capable of addressing multiple client devices.A value of zero for this byte is reserved to indicate that the host iscapable of operating only with a single client device.

The Sub-frame Length field contains 4 bytes of information, or values,that specifies the number of bytes per sub-frame. In one embodiment, thelength of this field may be set equal to zero to indicate that only onesub-frame will be transmitted by the host before the link is shut downinto an idle state. The value in this field can be dynamically changed“on-the-fly” when transitioning from one sub-frame to the next. Thiscapability is useful in order to make minor timing adjustments in thesync pulses for accommodating isochronous data streams. If the CRC ofthe Sub-frame Header packet is not valid then the link controller shoulduse the Sub-frame Length of the previous known-good Sub-frame Headerpacket to estimate the length of the current sub-frame.

The Protocol Version field contains 2 bytes that specify the protocolversion used by the host. The Protocol Version field may be set to ‘0’to specify the first or current version of the protocol as being used.This value will change over time as new versions are created, and isalready being upgraded to a value of ‘1’ for some version fields.Version values will probably or generally follow a current versionnumber for an approved standards document which covers interfaces suchas MDDI, as would be known.

The Sub-frame Count field contains 2 bytes that specify a sequencenumber that indicates the number of sub-frames that have beentransmitted since the beginning of the media-frame. The first sub-frameof the media-frame has a Sub-frame Count of zero. The last sub-frame ofthe media-frame has a value of n−1, where n is the number of sub-framesper media-frame. The value of the Sub-frame Count field is equal to theSub-frame Count sent in the previous Sub-Frame packet plus 1, except fora first sub-frame of a media-frame which will have a count of zero. Notethat if the Sub-frame Length is set equal to zero (indicating anon-periodic sub-frame) then the Sub-frame count is also set equal tozero.

The Media-frame Count field contains 4 bytes (32-bit unsigned integer)that specify a sequence number that indicates the number of media-framesthat have been transmitted since the beginning of the present media itemor data being transferred. The first media-frame of a media item has aMedia-frame Count of zero. The Media-frame Count increments just priorto the first sub-frame of each media-frame and wraps back to zero afterthe maximum Media-frame Count (for example, media-frame number2³⁻1=4,294,967,295) is used. The Media-frame Count value may be resetgenerally at any time by the Host to suit the needs of an endapplication.

2. Filler Packet

A filler packet is a packet that is transferred to, or from, a clientdevice when no other information is available to be sent on either theforward or reverse link. It is recommended that filler packets have aminimum length in order to allow maximum flexibility in sending otherpackets when required. At the very end of a sub-frame or a reverse linkencapsulation packet (see below), a link controller sets the size of thefiller packet to fill the remaining space to maintain packet integrity.The Filler Packet is useful to maintain timing on the link when the hostor client have no information to send or exchange. Every host and clientneeds to be able to send and receive this packet to make effective useof the interface.

An exemplary embodiment of the format and contents of a Filler Packetare shown in FIG. 10. As shown in FIG. 10, this type of packet isstructured to have Packet Length, Packet Type, Filler Bytes, and CRCfields. In one embodiment, this type of packet is generally identifiedas a Type 0, which is indicated in the 2-byte Type field. The bits orbytes in the Filler Bytes field comprise a variable number of all zerobit values to allow the filler packet to be the desired length. Thesmallest filler packet contains no bytes in this field. That is, thepacket consists of only the packet length, packet type, and CRC, and inone embodiment uses a pre-selected fixed length of 6 bytes or a PacketLength value of 4. The CRC value is determined for all bytes in thepacket including the Packet Length, which may be excluded in some otherpacket types.

3. Video Stream Packet

Video Stream Packets carry video data to update typically rectangularregions of a display device. The size of this region may be as small asa single pixel or as large as the entire display. There may be an almostunlimited number of streams displayed simultaneously, limited by systemresources, because all context required to display a stream is containedwithin the Video Stream Packet. The format of one embodiment of a VideoStream Packet (Video Data Format Descriptor) is shown in FIG. 11. Asseen in FIG. 11, in one embodiment, this type of packet is structured tohave Packet Length (2 bytes), Packet Type, bClient ID, Video DataDescriptor, Pixel Display Attributes, X Left Edge, Y Top Edge, X RightEdge, Y Bottom Edge, X and Y Start, Pixel Count, Parameter CRC, PixelData, and Pixel Data CRC fields. This type of packet is generallyidentified as a Type 16, which is indicated in the 2-byte Type field. Inone embodiment, a client indicates an ability to receive a Video StreamPacket using RGB, Monochrome, and Y Cr Cb Capability fields of theClient Capability Packet.

In one embodiment, the bClient ID field contains 2 bytes of informationthat are reserved for a Client ID. Since this is a newly developedcommunications protocol actual client IDs are not yet known orsufficiently communicable. Therefore, the bits in this field aregenerally set equal to zero until such ID values are known, at whichtime the ID values can be inserted or used, as would be apparent tothose skilled in the art. The same process will generally be true forthe client ID fields discussed below.

The format and contents employed for realizing the operation of anexemplary Video Data Descriptor field, as mentioned above, are shown inFIGS. 12A-12E. In FIGS. 12A-12E, the Video Data Format Descriptor fieldcontains 2 bytes in the form of a 16-bit unsigned integer that specifiesthe format of each pixel in the Pixel Data in the present stream in thepresent packet. It is possible that different Video Stream packets mayuse different pixel data formats, that is, use a different value in theVideo Data Format Descriptor, and similarly, a stream (region of thedisplay) may change its data format on-the-fly. The pixel data formatshould comply with at least one of the valid formats for the client asdefined in the Client Capability Packet. The Video Data FormatDescriptor defines the pixel format for the present packet only whichdoes not imply that a constant format will continue to be used for thelifetime of a particular video stream.

FIGS. 12A through 12D illustrate how the Video Data Format Descriptor iscoded. As used in these figures, and in this embodiment, when bits[15:13] are equal to ‘000’, as shown in FIG. 12A, then the video dataconsists of an array of monochrome pixels where the number of bits perpixel is defined by bits 3 through 0 of the Video Data Format Descriptorword. Bits 11 through 4 are generally reserved for future use orapplications and are set to zero in this situation. When bits [15:13]are instead equal to the values ‘001’, as shown in FIG. 12B, then thevideo data consists of an array of color pixels that each specify acolor through a color map (palette). In this situation, bits 5 through 0of the Video Data Format Descriptor word define the number of bits perpixel, and bits 11 through 6 are generally reserved for future use orapplications and set equal to zero. When bits [15:13] are instead equalto the values ‘010’, as shown in FIG. 12C, then the video data consistsof an array of color pixels where the number of bits per pixel of red isdefined by bits 11 through 8, the number of bits per pixel of green isdefined by bits 7 through 4, and the number of bits per pixel of blue isdefined by bits 3 through 0. In this situation, the total number of bitsin each pixel is the sum of the number of bits used for red, green, andblue.

However, when bits [15:13] are instead equal to the values or string‘011’, as shown in FIG. 12D, then the video data consists of an array ofvideo data in 4:2:2 YCbCr format with luminance and chrominanceinformation, where the number of bits per pixel of luminance (Y) isdefined by bits 11 through 8, the number of bits of the Cb component isdefined by bits 7 through 4, and the number of bits of the Cr componentis defined by bits 3 through 0. The total number of bits in each pixelis the sum of the number of bits used for red, green, and blue. The Cband Cr components are sent at half the rate as Y. In addition, the videosamples in the Pixel Data portion of this packet are organized asfollows: Cbn, Yn, Crn, Yn+1, Cbn+2, Yn+2, Crn+2, Yn+3, . . . where Cbnand Crn are associated with Yn and Yn+1, and Cbn+2 and Crn+2 areassociated with Yn+2 and Yn+3, and so on.

Yn, Yn+1, Yn+2 and Yn+3 are luminance values of four consecutive pixelsin a single row from left to right. If there are an odd number of pixelsin a row (X Right Edge−X Left Edge+1) in the window referenced by theVideo Stream Packet then the Y value corresponding to the last pixel ineach row will be followed by the Cb value of the first pixel of the nextrow, and a Cr value is not sent for the last pixel in the row. It isrecommended that windows using Y Cb Cr format have a width that is aneven number of pixels. The Pixel Data in a packet should contain an evennumber of pixels. It may contain an odd or even number of pixels in thecase where the last pixel of the Pixel Data corresponds to the lastpixel of a row in the window specified in the Video Stream Packetheader, i.e. when the X location of the last pixel in the Pixel Data isequal to X Right Edge.

When bits [15:13] are instead equal to the values ‘100’ then the videodata consists of an array of Bayer pixels where the number of bits perpixel is defined by bits 3 through 0 of the Video Data Format Descriptorword. The Pixel Group Pattern is defined by bits 5 and 4 as shown inFIG. 12E. The order of pixel data may be horizontal or vertical, and thepixels in rows or columns may be sent in forward or backward order andis defined by bits 8 through 6. Bits 11 through 9 should be set to zero.The group of four pixels in the pixel group in the Bayer formatresembles what is often referred to as a single pixel in some displaytechnologies. However, one pixel in the Bayer format is only one of thefour colored pixels of the pixel group mosaic pattern.

For all five formats shown in the figures, Bit 12, which is designatedas “P,” specifies whether or not the Pixel Data samples are packed, orbyte-aligned pixel data. A value of ‘0’ in this field indicates thateach pixel in the Pixel Data field is byte-aligned with an MDDI byteboundary. A value of ‘1’ indicates that each pixel and each color withineach pixel in the Pixel Data is packed up against the previous pixel orcolor within a pixel leaving no unused bits. The difference betweenByte-Aligned and Packed Pixel data format is shown in more detail inFIG. 13, where one can clearly see that byte-aligned data may leaveunused portions of the data sub-frame, as opposed to packed pixel formatwhich does not.

4. Audio Stream Packet

The audio stream packets carry audio data to be played through the audiosystem of the client, or for a stand alone audio presentation device.Different audio data streams may be allocated for separate audiochannels in a sound system, for example: left-front, right-front,center, left-rear, and right-rear, depending on the type of audio systembeing used. A full complement of audio channels is provided for headsetsthat contain enhanced spatial-acoustic signal processing. A clientindicates an ability to receive an Audio Stream Packet using the AudioChannel Capability and Audio Sample Rate fields of the Client CapabilityPacket. The format of Audio Stream Packets is illustrated in FIG. 14.

As shown in FIG. 14, this type of packet is structured in one embodimentto have Packet Length, Packet Type, bClient ID, Audio Channel ID,Reserved 1, Audio Sample Count, Bits Per Sample and Packing, AudioSample Rate, Parameter CRC, Digital Audio Data, and Audio Data CRCfields. In one embodiment, this type of packet is generally identifiedas a Type 32 packet.

The bClient ID field contains 2 bytes of information that are reservedfor a Client ID, as used previously. The Reserved 1 field contains 2bytes that is reserved for future use, and is generally configured atthis point with all bits set to zero.

The Bits Per Sample and Packing field contains 1 byte in the form of an8-bit unsigned integer that specifies the packing format of audio data.The format generally employed is for Bits 4 through 0 to define thenumber of bits per PCM audio sample. Bit 5 then specifies whether or notthe Digital Audio Data samples are packed. The difference between packedand byte-aligned audio samples, here using 10-bit samples, isillustrated in FIG. 15. A value of ‘0’ indicates that each PCM audiosample in the Digital Audio Data field is byte-aligned with an MDDI byteboundary, and a value of ‘1’ indicates that each successive PCM audiosample is packed up against the previous audio sample. This bit isgenerally effective only when the value defined in bits 4 through 0 (thenumber of bits per PCM audio sample) is not a multiple of eight. Bits 7through 6 are reserved for future use and are generally set at a valueof zero.

5. Reserved Stream Packets

In one embodiment, packet types 1 to 15, 18 to 31, and 33 through 55 arereserved for stream packets to be defined for use in future versions orvariations of the packet protocols, as desired for various applicationsencountered. Again, this is part of making the MDDI more flexible anduseful in the face of ever changing technology and system designs ascompared to other techniques.

6. User-Defined Stream Packets

Eight data stream types, known as Types 56 through 63, are reserved foruse in proprietary applications that may be defined by equipmentmanufacturers for use with a MDDI link. These are known as User-definedStream Packets. Such packets may be used for any purpose, but the hostand client should only employ such packets in situations where theresult of such use is very well understood or known. The specificdefinition of the stream parameters and data for these packet types isleft to the specific equipment manufacturers or interface designersimplementing such packet types or seeking their use. Some exemplary usesof the User-defined Stream Packets are to convey test parameters andtest results, factory calibration data, and proprietary special usedata. The format of the user-defined stream packets as used in oneembodiment is illustrated in FIG. 16. As shown in FIG. 16, this type ofpacket is structured to have Packet Length (2 bytes), Packet Type,bClient ID number, Stream Parameters, Parameter CRC, Stream Data, andStream Data CRC fields.

7. Color Map Packets

The color map packets specify the contents of a color map look-up tableused to present colors for a client. Some applications may require acolor map that is larger than the amount of data that can be transmittedin a single packet. In these cases, multiple Color Map packets may betransferred, each with a different subset of the color map by using theoffset and length fields described below. The format of the Color MapPacket in one embodiment is illustrated in FIG. 17. As shown in FIG. 17,this type of packet is structured to have Packet Length, Packet Type,hClient ID, Color Map Item Count, Color Map Offset, Parameter CRC, ColorMap Data, and Data CRC fields. In one embodiment, this type of packet isgenerally identified as a Type 64 packet (Video Data Format and ColorMap Packet) as specified in the Packet Type Field (2 bytes). A clientindicates an ability to receive Color Map Packets using the Color MapSize and Color Map Width fields of the Client Capability Packet.

8. Reverse Link Encapsulation Packets

In an exemplary embodiment, data is transferred in the reverse directionusing a Reverse Link Encapsulation Packet. A forward link packet is sentand the MDDI link operation (transfer direction) is changed or turnedaround in the middle of this packet so that packets can be sent in thereverse direction. The format of the Reverse Link Encapsulation packetin one embodiment is illustrated in FIG. 18. As shown in FIG. 187, thistype of packet is structured to have Packet Length, Packet Type, hClientID, Reverse Link Flags, Reverse Rate Divisor, Turn-Around 1 Length,Turn-Around 2 Length, Parameter CRC, All Zero 1, Turn-Around 1, ReverseData Packets, Turn-Around 2, and All Zero 2 fields. In one embodiment,this type of packet is generally identified as a Type 65 packet. ForExternal Mode every host must be able to generate this packet andreceive data, and every client must be able to receive and send data tothe host in order to efficiently make use of the desired protocol andresulting speed. Implementation of this packet is optional for InternalMode, but the Reverse Link Encapsulation Packet is used for the host toreceive data from the client.

The MDDI link controller behaves in a special manner while sending aReverse Link Encapsulation Packet. The MDDI has a strobe signal that isgenerally always driven by the host as controller of the link. The hostbehaves as if it were transmitting a zero for each bit of theTurn-Around and Reverse Data Packets portions of the Reverse LinkEncapsulation packet. The host toggles a MDDI_Strobe signal at each bitboundary during the two turn-around times and during the time allocatedfor reverse data packets. That is, the host toggles MDDI_Stb from thebeginning of the All Zero 1 field to the end of the All Zero 2 field.(This is the same behavior as if it were transmitting all-zero data.)

The host disables its MDDI data signal line drivers and generallyassures they have been completely disabled prior to the last bit of theTurn-Around 1 field, and then re-enables its line drivers during theTurn-Around 2 field, and generally assure that the drivers have beencompletely re-enabled prior to the last bit of the Turn-Around 2 field.The client reads the Turn-Around Length parameter and drives the datasignals toward the host immediately after the last bit in theTurn-Around 1 field. That is, the client clocks new data into the linkon certain rising edges of the MDDI strobe as specified in the packetcontents description below, and elsewhere. The client uses the PacketLength and Turn-Around Length parameters to know the length of time ithas available to send packets to the host. The client may send fillerpackets or drive the data lines to a zero state when it has no data tosend to the host. If the data lines are driven to zero, the hostinterprets this as a packet with a zero length (not a valid length) andthe host does not accept any more packets from the client for theduration of the current Reverse Link Encapsulation Packet.

In one embodiment, the Reverse Link Request field of the Client Requestand Status Packet may be used to inform the host of the number of bytesthe client needs in the Reverse Link Encapsulation Packet to send databack to the host. The host attempts to grant the request by allocatingat least that number of bytes in the Reverse Link Encapsulation Packet.The host may send more than one Reverse Link Encapsulation Packet in asub-frame. The client may send a Client Request and Status Packet atalmost any time, and the host will interpret the Reverse Link Requestparameter as the total number of bytes requested in one sub-frame.

9. Client Capability Packets

A host needs to know the capability of the client (display) it iscommunicating with in order to configure the host-to-client link in angenerally optimum or desired manner. It is recommended that a displaysend a Client Capability Packet to the host after forward linksynchronization is acquired. The transmission of such a packet isconsidered required when requested by the host using the Reverse LinkFlags in the Reverse Link Encapsulation Packet. The Client CapabilityPacket is used to inform the host of the capabilities of a client. ForExternal Mode every host should be able to receive this packet, andevery client should be able to send this packet to fully utilize thisinterface and protocol. Implementation of this packet is optional forInternal Mode, since the capabilities of the client, such as a display,keyboard or other input/output device, in this situation should alreadybe well defined and known to the host at the time of manufacture orassembly into a single component or unit of some type.

The format of the Client Capability packet in one embodiment isillustrated in FIG. 19. As shown in FIG. 19, for this embodiment, thistype of packet is structured to have Packet Length, Packet Type,cClientID, Protocol Version, Min Protocol Version, Data Rate Capability,Interface Type Capability, Number of Alt Displays, Reserved 1, BitmapWidth, Bitmap Height, Display Window Width, Display Window Height, ColorMap Size, Color Map RGB Width, RGB Capability, Monochrome Capability,Reserved 2, Y Cr Cb Capability, Bayer Capability, Reserved 3, ClientFeature Capability, Max Video Frame Rate, Min Video Frame Rate, MinSub-frame rate, Audio Buffer Depth, Audio Channel Capability, AudioSample Rate Capability, Audio Sample Resolution, Mic Sample Resolution,Mic Sample Rate Capability, Keyboard Data Format, Pointing Device DataFormat, Content Protection Type, Mfr. Name, Product Code, Reserved 4,Serial Number, Week of Mfr., Year of Mfr., and CRC fields. In anexemplary embodiment, this type of packet is generally identified as aType 66 packet.

10. Keyboard Data Packets

A keyboard data packet is used to send keyboard data from the clientdevice to the host. A wireless (or wired) keyboard may be used inconjunction with various displays or audio devices, including, but notlimited to, a head mounted video display/audio presentation device. TheKeyboard Data Packet relays keyboard data received from one of severalknown keyboard-like devices to the host. This packet can also be used onthe forward link to send data to the keyboard. A client indicates anability to send and receive Keyboard Data Packets using the KeyboardData Field in the Client Capability Packet.

The format of a Keyboard Data Packet is shown in FIG. 20, and contains avariable number of bytes of information from or for a keyboard. As shownin FIG. 20, this type of packet is structured to have Packet Length,Packet Type, bClient ID, Keyboard Data Format, Keyboard Data, and CRCfields. Here, this type of packet is generally identified as a Type 67packet.

The bClient ID is a reserved field, as before, and the CRC is performedover all bytes of the packet. The Keyboard Data Format field contains a2 bytes value that describes the keyboard data format. Bits 6 through 0should be identical to the Keyboard Data Format field in the ClientCapability Packet. This value is not to equal 127. Bits 15 through 7 arereserved for future use and are, therefore, currently set to zero.

11. Pointing Device Data Packets

A pointing device data packet is used as a method, structure, or meansto send position information from a wireless mouse or other pointingdevice from the client to the host. Data can also be sent to thepointing device on the forward link using this packet. An exemplaryformat of a Pointing Device Data Packet is shown in FIG. 21, andcontains a variable number of bytes of information from or for apointing device. As shown in FIG. 21, this type of packet is structuredto have Packet Length, Packet Type, bClient ID, Pointing Device Format,Pointing Device Data, and CRC fields. In an exemplary embodiment, thistype of packet is generally identified as a Type 68 packet in the 1-bytetype field.

12. Link Shutdown Packets

A Link Shutdown Packet is sent from the host to the client as a methodor means to indicate that the MDDI data and strobe will be shut down andgo into a low-power consumption “hibernation” state. This packet isuseful to shut down the link and conserve power after static bitmaps aresent from a mobile communication device to the display, or when there isno further information to transfer from a host to a client for the timebeing. Normal operation is resumed when the host sends packets again.The first packet sent after hibernation is a sub-frame header packet.The format of a Client Status Packet for one embodiment is shown in FIG.22. As shown in FIG. 22, this type of packet is structured to havePacket Length, Packet Type, CRC and All Zeros fields. In one embodiment,this type of packet is generally identified as a Type 69 packet in the1-byte type field.

The packet length field uses 2 bytes to specify the total number ofbytes in the packet not including the packet length field. In oneembodiment, the Packet Length of this packet is dependent on theInterface Type or link mode in effect at the time when the Link ShutdownPacket is sent. Therefore, the typical packet length becomes 20 bytesfor Type 1 mode (22 bytes total in the packet), 36 bytes for a Type 2mode (38 bytes total in the packet), 68 bytes for a Type 3 mode link (70bytes total in the packet), and 132 bytes for a Type 4 mode (with 134bytes total in the packet).

The All Zeros field uses a variable number of bytes to ensure thatMDDI_Data signals are at a logic-zero level for a sufficient time toallow the client to begin recovering clock using only MDDI_Stb prior todisabling a host's line drivers. The length of the All Zeros field isdependent on the Interface Type or link operating mode in effect at thetime when the Link Shutdown Packet is sent. The length of the All Zerosfield is intended to produce 64 pulses on MDDI_Stb for any InterfaceType setting. Therefore, the All Zeros length for each interface typebecomes 16 bytes for Type 1, 32 bytes for Type 2, 64 bytes for Type 3,and 128 bytes for Type 4.

The CRC field uses 2 bytes that contain a 16-bit CRC of bytes from thePacket Length to the Packet Type.

In the low-power hibernation state, the MDDI_Data0 driver is disabledinto a high-impedance state starting after the 16th to 48th MDDI_Stbcycle or pulse after the last bit of the All Zeros field. For Type-2,Type-3, or Type-4 links the MDDI_Data1 through MDDI_DataPwr7 signals arealso placed in a high-impedance state at the same time that theMDDI_Data0 driver is disabled Either the host or client may cause theMDDI link to “wake up” from the hibernation state as describedelsewhere, which is a key advance for and advantage of the presentinvention.

As described in the definition of the All Zeros field, MDDI_Stb togglesfor 64 cycles following the MSB of the CRC field of the Link ShutdownPacket to facilitate an orderly shutdown in the client controller. Onecycle is a low-to-high transition followed by a high-to-low transition,or a high-to-low transition followed by a low-to-high transition. Afterthe All Zeros field is sent, the MDDI_Stb driver in the host isdisabled.

13. Client Request and Status Packets

The host needs a small amount of information from the client so it canconfigure the host-to-client link in a generally optimum manner. It isrecommended that the client send one Client Request and Status Packet tothe host each sub-frame. The client should send this packet as the firstpacket in the Reverse Link Encapsulation Packet to ensure that it isdelivered reliably to the host. The forwarding of this packet is alsoaccomplished when requested by a host using the Reverse Link Flags inthe Reverse Link Encapsulation Packet. The Client Request and StatusPacket is used to report errors and status to the host. For externalmode operation, every host should be able to receive this packet, andevery client should be able to send this packet in order to properly oroptimally employ the MDDI protocol. While it is also recommended thatfor internal operations, that is internal hosts and internal clients,there should be support for this packet, it is not required.

The format of a Client Request and Status Packet is shown in FIG. 23. Asshown in FIG. 23, this type of packet is structured to have PacketLength, Packet Type, cClient ID, Reverse Link Request, CapabilityChange, Client Busy, CRC Error Count, and CRC fields. This type ofpacket is generally identified as a Type 70 packet in the 1-byte typefield, and typically uses a pre-selected fixed length of 12 bytes.

The Reverse Link Request field may be used to inform the host of thenumber of bytes the client needs in the Reverse Link EncapsulationPacket to send data back to the host. The host should attempt to grantthe request by allocating at least that number of bytes in the ReverseLink Encapsulation Packet. The host may send more than one Reverse LinkEncapsulation Packet in a sub-frame in order to accommodate data. Theclient may send a Client Request and Status Packet at any time and thehost will interpret the Reverse Link Request parameter as the totalnumber of bytes requested in one sub-frame. Additional details andspecific examples of how reverse link data is sent back to the host areshown below.

14. Bit Block Transfer Packets

The Bit Block Transfer Packet provides a means, structure, or method toscroll regions of the display in any direction. Displays that have thiscapability will report the capability in bit 0 of the Display FeatureCapability Indicators field of the Client Capability Packet. The formatfor one embodiment of a Bit Block Transfer Packet is shown in FIG. 24.As shown in FIG. 24, this type of packet is structured to have PacketLength, Packet Type, hClient ID, Upper Left X Value, Upper Left Y Value,Window Width, Window Height, Window X Movement, Window Y Movement, andCRC fields. This type of packet is generally identified as a Type 71packet, and in one embodiment uses a pre-selected fixed length of 15bytes.

The fields are used to specify the X and Y values of the coordinate ofthe upper left corner of the window to be moved, the width and height ofthe window to be moved, and the number of pixels that the window is tobe moved horizontally, and vertically, respectively. Positive values forthe latter two fields cause the window to be moved to the right, anddown, and negative values cause movement to the left and up,respectively.

15. Bitmap Area Fill Packets

The Bitmap Area Fill Packet provides a means, structure, or method toeasily initialize a region of the display to a single color. Displaysthat have this capability will report the capability in bit 1 of theClient Feature Capability Indicators field of the Client CapabilityPacket. One embodiment for the format of a Bitmap Area Fill Packet isshown in FIG. 25. As shown in FIG. 25, in this case this type of packetis structured to have Packet Length, Packet Type, hClient ID, Upper LeftX Value, Upper Left Y Value, Window Width, Window Height, Data FormatDescriptor, Pixel Area Fill Value, and CRC fields. This type of packetis generally identified as a Type 72 packet in the 1-byte type field,and uses a pre-selected fixed length of 17 bytes.

16. Bitmap Pattern Fill Packets

The Bitmap Pattern Fill Packet provides a means or structure to easilyinitialize a region of the display to a pre-selected pattern. Displaysthat have this capability will report the capability in bit 2 of theClient Feature Capability field of the Client Capability Packet. Theupper left corner of the fill pattern is aligned with the upper leftcorner of the window to be filled, unless the horizontal or verticalpattern offset is non-zero. If the window to be filled is wider ortaller than the fill pattern, then the pattern may repeated horizontallyor vertically a number of times to fill the window. The right or bottomof the last repeated pattern is truncated as necessary. If the window issmaller than the fill pattern, then the right side or bottom of the fillpattern may be truncated to fit the window.

If a horizontal pattern offset is non-zero, then the pixels between theleft side of the window and the left side plus the horizontal patternoffset are filled with the right-most pixels of the pattern. Thehorizontal pattern offset is to be less than the pattern width.Similarly, if a vertical pattern offset is non-zero, then the pixelsbetween the top side of the window and the top of the side plus verticalpattern offset are filled with the lower-most pixels of the pattern. Thevertical pattern offset is to be less than the pattern height.

One embodiment for the format of a Bitmap Pattern Fill Packet is shownin FIG. 26. As shown in FIG. 26, this type of packet is structured tohave Packet Length, Packet Type, hClient ID, Upper Left X Value, UpperLeft Y Value, Window Width, Window Height, Pattern Width, PatternHeight, Horizontal Pattern Offset, Vertical Pattern Offset, Data FormatDescriptor, Parameter CRC, Pattern Pixel Data, and Pixel Data CRCfields. In some embodiments, this type of packet is generally identifiedas a Type 73 packet in the 1-byte type field.

17. Communication Link Data Channel Packets

The Communication Link Data Channel Packet provides a structure, means,or method for a client with high-level computing capability, such as aPDA, to communicate with a wireless transceiver such as a cell phone orwireless data port device. In this situation, the MDDI link is acting asa convenient high-speed interface between the communication device andthe computing device with the mobile display, where this packettransports data at a Data Link Layer of an operating system for thedevice. For example, this packet could be used if a web browser, emailclient, or an entire PDA were built into a mobile display. Displays thathave this capability will report the capability in bit 3 of the ClientFeature Capability field of the Client Capability Packet.

The format of an embodiment for a Communication Link Data Channel Packetis shown in FIG. 27. As shown in FIG. 27, this type of packet isstructured to have Packet Length, Packet Type, hClient ID, ParameterCRC, Communication Link Data, and Communication Data CRC fields. In oneembodiment, this type of packet is generally identified as a Type 74packet in the type field.

18. Display Power State Packets

The Display Power State Packet provides a structure, means, or methodfor placing specific client controlled or client related, connected, orcontroller hardware into a low power state when a client such as adisplay is not being used or in current active use, in order to minimizethe system power consumption or drain on system resources. A packet ofthis type is the most useful for applications of the interface orinterface structure and protocol to external mode configurations oroperations. In such applications, it is more likely that the externaldevice is operating on limited power resources such as batteries, or hasother power constraints and concerns, for example overheating in limitedspaces, and so forth, such that a minimal operating condition is desiredfor periods or inactivity or non-use. In one embodiment, a clientindicates an ability to respond to Display Power State Packets using bit9 of the Client Feature Capability Indicators field of the ClientCapability Packet.

The format of one embodiment for a Display Power State Packet is shownin FIG. 28. As shown in FIG. 28, in one embodiment, this type of packetis structured to have Packet Length, Packet Type, hClient ID, PowerState, and CRC fields. This type of packet is generally identified as aType 75 packet in the 2-byte type field. The 2-byte hClient ID fieldcontains information or values that are reserved for a Client ID, asused previously. Since this field is generally reserved for future use,the current value is set to zero, by setting the bits to ‘0’, althoughit can be used by one skilled in the art to transfer desiredinformation.

The Power State field, here 2 bytes, specifies the information used toplace a specific device, piece of hardware, or equipment associated withthe client such as a display into the specified power state. When usedfor displays, Bit 0 of this field specifies whether or not the packetapplies to the main display or to an alternate display. If bit 0 isequal to 1 then the packet applies to the main display. If bit 0 isequal to 0 then the packet applies to the alternate display specified bybits 11 through 8. Bit 1 is reserved for future use and is generally setto zero.

Bits 3 through 2 of the Power State field specify the power state of thedisplay selected by bits 11 through 8 and bit 0. When Bits[3:2] have avalue of ‘00’, the selected display is not illuminated and should beconsuming a minimum amount of power, and the contents of the framebuffer are not guaranteed to be retained during this state. WhenBits[3:2] have a value of ‘01’, the selected display is not illuminatedand is consuming a minimum amount of power and the contents of the framebuffer are guaranteed to be retained during this state. The display mayconsume more power in this state than in state 00. The client canindicate an ability to support state 01 via bit 10 of the Client FeatureCapability Indicators field of the Client Capability Packet. WhenBits[3:2] of the Power State field have a value of ‘10’, the selecteddisplay is illuminated and is displaying an image from its associatedframe buffer. The value of ‘11’ for Bits[3:2] is a reserved value orstate for future use and is not used.

Those skilled in the art will recognize that while most useful fordisplay applications, use of this packet is not limited by thisinvention to only displays and there may be other applications,configurations, or situations in which power control may needed ordesired in relation to other hardware elements with which the MDDI isbeing used, or for which a client is controlling or communicating. Inthese situations, the Bits disclosed above may have similar functionsbut could be activating main and secondary ones of such elements, orsetting power levels and so forth, as would be understood.

Bits 11 through 8 of the Power State field form a 4-bit unsigned integerthat specifies the alternate display to which the power state isapplied. Bit 0 is set to a logic-zero value in order for the client tointerpret bits 11 through 8 as an alternate display number. If bit 0 isequal to 1 then bits 11 through 8 are zero.

Bits 7 through 4 and Bits 15 through 12 are reserved for future use, andare generally be set to logic-zero level or values for currentapplications or designs.

The 2 byte CRC field specifies or contains the CRC of all bytes in thepacket including the Packet Length.

19. Perform Type Handoff Packets

The Perform Type Handoff Packet is a means, structure, or method for thehost to use in order to command a client to handoff to the modespecified in this packet. This is to be the one of the interface typesettings supported by the client as described in the Client CapabilityPacket. The host and client should switch to the specified forward andreverse link interface type right after this packet is sent. The formatof one embodiment for a Perform Type Handoff Packet is shown in FIG. 29.Hosts and clients that support an interface type other than Type 1should provide support for this packet. It is typically recommended thata host reads the Client Request and Status Packet immediately before itsends the Perform Type Handoff Packet to confirm that the client is insync with the host.

As shown in FIG. 29, in one embodiment, this type of packet isstructured to have Packet Length, Packet Type, Interface Type, Reserve1, Delay Filler, and CRC fields. This type of packet is generallyidentified as a Type 77 packet in the 2-byte type field, and uses apre-selected fixed length of 6 bytes, outside of the Packet Length andDelay Filler fields.

In one embodiment, the Interface Type field uses a 1 byte value toconfirm a new interface type to be used or employed for the link. Thevalue in this field specifies or represents the interface type in thefollowing manner. Bits 2 through 0 define the interface Type to be usedon the forward link with a value of 1 signifying or specifying a handoffto a Type 1 mode; a value of 2 a handoff to Type 2 mode, a value of 3 ahandoff to Type 3 mode, and a value of 4 a handoff to Type 4 mode. Bits5 through 3 define the interface Type to be used on the reverse linkwith a value of 1 signifying or specifying a handoff to a Type 1 mode,value of 2 a handoff to Type 2 mode, a value of 3 a handoff to Type 3mode, and a value of 4 a handoff to Type 4 mode. Bits 0, 6, and 7 arecurrently reserved for future use, and as such are typically, but notnecessarily, set to a logic-zero level.

The Delay Filler field has been created as a means, structure, or methodfor allowing sufficient time on the part of the system for the client toprepare or be configured to switch over to use or set up for using a newinterface type setting at the beginning of the packet that immediatelyfollows the Perform Interface Type Handoff Packet. This field contains agroup of bytes or 8-bit values that are all set at or equal to alogic-zero level or value. The number of bytes used in this field isselected such that it results in this field being a length equivalent to64 MDDI_Stb cycles. The length of the Delay Filer field is based on theinterface type setting of the forward link which will be 16 bytes for aType 1 forward link interface type, 32 bytes for a Type 2 interfacetype, 64 bytes for a Type 3 interface type, and 128 bytes whenspecifying or using a Type 4 forward link interface type.

The Reserved 1 field (here 1 byte) is reserved for future use inimparting information. All bits in this field are generally set to alogic-zero level. The purpose of such fields is currently to cause allsubsequent 2 byte fields to align to a 16-bit word address and cause4-byte fields to align to a 32-bit word address. The CRC field (here 2bytes) contains a 16-bit CRC of all bytes in the packet including thePacket Length.

20. Forward Audio Channel Enable Packets

This packet provides a structure, method, or means that allows a host toenable or disable audio channels in a client. This capability is usefulso that a client (a display for example) can power off audio amplifiersor similar circuit elements to save power when there is no audio to beoutput by the host. This is significantly more difficult to implementimplicitly simply using the presence or absence of audio streams as anindicator. The default state when the client system is powered-up isthat all audio channels are enabled. The format of one embodiment of aForward Audio Channel Enable Packet is shown in FIG. 30. As shown inFIG. 30, this type of packet is structured to have Packet Length, PacketType, hClient ID, Audio Channel Enable Mask, and CRC fields. This typeof packet is generally identified as a Type 78 packet in the 1-byte typefield, and uses a pre-selected fixed length of 4 bytes.

21. Reverse Audio Sample Rate Packets

This type of packet provides a structure, method, or means that allows ahost to enable or disable audio channels in a client. This capability isuseful so the client can power off audio amplifiers to save power whenthere is no audio to be output by the host. This is significantly moredifficult to implement implicitly using the presence or absence of audiostreams. The default state when a client system is powered-up orconnected to the host is that all audio channels are enabled. An audiosystem connected to a host and a client should be ready or able tooutput audio signals in an intended or desired manner within about 100msec. or less after the client receives a Forward Audio Channel Enablepacket having a least one of the bits in the Audio Channel Enable Maskfield having made a transition from a zero to a one state or value. Theclient indicates an ability to respond to a Forward Audio Channel EnablePacket using the value set for bit 15 of the Audio Channel Capabilityfield of the Client Capability Packet.

This packet allows the host to enable or disable the reverse-link audiochannel, and to set the audio data sample rate of this stream. The hostselects a sample rate that is defined to be valid in the ClientCapability Packet. If the host selects an invalid sample rate then theclient will not send an audio stream to the host, and an appropriateerror, error value, or error signal, may be sent to the host in theClient Error Report Packet. The host may disable the reverse-link audiostream by setting the sample rate to a value of 255. The default stateassumed when the client system is initially powered-up or connected iswith the reverse-link audio stream disabled. The format of oneembodiment for a Reverse Audio Sample Rate Packet is shown in FIG. 31.As shown in FIG. 31, this type of packet is structured to have PacketLength, Packet Type, hClient ID, Audio Sample Rate, Reserved 1, and CRCfields. This type of packet is generally identified as a Type 79 packet,and uses a pre-selected fixed length of 4 bytes.

22. Digital Content Protection Overhead Packets

This packet provides a structure, method, or means that allows a hostand a client to exchange messages related to the digital contentprotection method being used. Presently two types of content protectionare contemplated, Digital Transmission Content Protection (DTCP), orHigh-bandwidth Digital Content Protection System (HDCP), with roomreserved for future alternative protection scheme designations. Themethod being used is specified by a Content Protection Type parameter inthis packet. The format of an embodiment of a Digital Content ProtectionOverhead Packet is shown in FIG. 32. As shown in FIG. 32, this type ofpacket is structured to have Packet Length, Packet Type, bClient ID,Content Protection Type, Content Protection Overhead Messages, and CRCfields. This type of packet is generally identified as a Type 80 packet.

23. Transparent Color Enable Packets

The Transparent Color Enable Packet is a structure, method, or meansthat used to specify which color is transparent in a display and toenable or disable the use of a transparent color for displaying images.Displays that have this capability will report that capability in bit 4of the Client Feature Capability field of the Client Capability Packet.When a pixel with the value for transparent color is written to thebitmap, the color does not change from the previous value. The format ofa Transparent Color Enable Packet is shown in FIG. 33. As shown in FIG.33, in one embodiment this type of packet is structured to have PacketLength, Packet Type, hClient ID, Transparent Color Enable, Reserved 1,Alpha-Cursor Identifier, Data Format Descriptor, Transparent PixelValue, and CRC fields. This type of packet is generally identified as aType 81 packet in the 1-byte type field, and uses a pre-selected fixedlength of 10 bytes.

24. Round Trip Delay Measurement Packets

The Round Trip Delay Measurement Packet provides a structure, method, ormeans that is used to measure the propagation delay from the host to aclient (display) plus the delay from the client (display) back to thehost. This measurement inherently includes the delays that exist in theline drivers and receivers, and an interconnect sub-system. Thismeasurement is used to set the turn around delay and reverse link ratedivisor parameters in the Reverse Link Encapsulation Packet, describedgenerally above. This packet is most useful when the MDDI link isrunning at the maximum speed intended for a particular application. Thepacket may be sent in Type 1 mode and at a lower data rate in order toincrease the range of the round trip delay measurement. The MDDI_Stbsignal behaves as though all zero data is being sent during thefollowing fields: both Guard Times, All Zero, and the MeasurementPeriod. This causes MDDI_Stb to toggle at half the data rate so it canbe used as periodic clock in the client during the Measurement Period.

In one embodiment, a client generally indicates an ability to supportthe Round Trip Delay Measurement Packet through use of bit 18 of theClient Feature Capability Indicators field of the Client CapabilityPacket. It is recommended that all clients support round trip delaymeasurement, but it is possible for the host to know the worst-caseround trip delay based on a maximum cable delay, and on maximum driverand receiver delays. The host may also know the round-trip delay inadvance for an MDDI link used in internal mode, since this is an aspectof known design elements (conductor lengths, circuitry type, andfeatures, and so forth) of the device in which the interface is beingused.

The format of a Round Trip Delay Measurement Packet is shown in FIG. 34.As shown in FIG. 34, in one embodiment this type of packet is structuredto have Packet Length, Packet Type, hClient ID, Parameter CRC, GuardTime 1, Measurement Period, All Zero, and Guard Time 2 fields. This typeof packet is generally identified as a Type 82 packet, and uses apre-selected fixed length of 159 bits.

The timing of events that take place during the Round Trip DelayMeasurement Packet are illustrated in FIG. 35. In FIG. 35, the hosttransmits the Round Trip Delay Measurement Packet, shown by the presenceof the Parameter CRC and Strobe Alignment fields followed by the AllZero 1 and Guard Time 1 fields. A delay 3502 occurs before the packetreaches the client display device or processing circuitry. As the clientreceives the packet, it transmits the 0xff, 0xff, and 30 bytes of 0x00pattern as precisely as practical at the beginning of the MeasurementPeriod as determined by the client. The actual time the client begins totransmit this sequence is delayed from the beginning of the MeasurementPeriod from the point of view of the host. The amount of this delay issubstantially the time it takes for the packet to propagate through theline drivers and receivers and the interconnect subsystem (cables,conductors). A similar amount of delay 3504 is incurred for the patternto propagate from the client back to the host.

In order to accurately determine the round trip delay time for signalstraversing to and from the client, the host counts the number of forwardlink bit time periods occurring after the start of the MeasurementPeriod until the beginning of the 0xff, 0xff, and 30 bytes of 0x00sequence is detected upon arrival. This information is used to determinethe amount of time for a round trip signal to pass from the host to theclient and back again. Then, about one half of this amount is attributedto a delay created for the one way passage of a signal to the client.

The host and client both drive the line to a logic-zero level duringboth guard times to keep the MDDI_DATA lines in a defined state. Theenable and disable times of the host and client during both guard timesare such that the MDDI_Data signals are at a valid low level for anyvalid round-trip delay time.

25. Forward Link Skew Calibration Packet

The Forward Link Skew Calibration Packet allows a client or display tocalibrate itself for differences in the propagation delay of theMDDI_Data signals with respect to the MDDI_Stb signal. Without delayskew compensation, the maximum data rate is generally limited to accountfor potential worst-case variation in these delays. Generally, thispacket is only sent when the forward link data rate is configured to arate of around 50 Mbps or lower. After sending this packet to calibratethe display, the data rate may be stepped up above 50 Mbps. If the datarate is set too high during the skew calibration process, the displaymight synchronize to an alias of the bit period which could cause thedelay skew compensation setting to be off by more than one bit time,resulting in erroneous data clocking. The highest data rate type ofinterface or greatest possible Interface Type is selected prior tosending the Forward Link Skew Calibration Packet so that all existingdata bits are calibrated.

One embodiment of the format of a Forward Link Skew Calibration Packetis shown in FIG. 56. As shown in FIG. 56, this type of packet isstructured to have Packet Length (2 bytes), Packet Type, hClient ID,Parameter CRC, All Zero 1, Calibration Data Sequence, and All Zero 2fields. This type of packet is generally identified as a Type 83 packetin the type field, and in one embodiment has a pre-selected length of519.

Virtual Control Panel

The use of a Virtual Control Panel (VCP) allows a host to set certainuser controls in a client. By allowing these parameters to be adjustedby the host, the user interface in the client can be simplified becausescreens that allow a user to adjust parameters such as audio volume ordisplay brightness can be generated by host software rather than by oneor more microprocessors in the client. The host has the ability to readthe parameter settings in the client and to determine the range of validvalues for each control. The client generally has the capability toreport back to the host which control parameters can be adjusted.

The control codes (VCP Codes) and associated data values generallyspecified, are utilized to specify controls and settings in the client.The VCP Codes in the MDDI specification are expanded to 16 bits topreserve proper data field alignment in the packet definitions, and inthe future to support supplementary values that are unique to thisinterface or future enhancements.

26. Request VCP Feature Packet

The Request VCP Feature Packet provides a means, mechanism, or methodfor the host to request the current setting of a specific controlparameter or all valid control parameters. Generally, a client respondsto a VCP Packet with the appropriate information in a VCP Feature ReplyPacket. In one embodiment, the client indicates an ability to supportthe Request VCP Feature Packet using bit 13 of the Client FeatureCapability Indicators field of the Client Capability Packet.

The format of the Request VCP Feature Packet in one embodiment is shownin FIG. 69. As seen in FIG. 69, this type of packet is structured tohave Packet Length, Packet Type, hClient ID, MCCS VCP code, and CRCfields. This type of packet is generally identified in one embodiment asa Type 128, which is indicated in the 2 byte type field. The packetlength, which specifies the total number of bytes in the packet notincluding the packet length field, is typically fixed for this type ofpacket at a length of 8 bytes.

The hClient ID field is reserved for use as a Client ID in futureimplementations and is typically set to zero. The MCCS VCP Code fieldcomprises 2 bytes of information that specifies the MCCS VCP ControlCode Parameter. A value in the range of 0 to 255 causes a VCP FeatureReply Packet to be returned with a single item in the VCP Feature ReplyList corresponding to the specified MCCS code. An MCCS VCP Code of 65535(0xffff) requests a VCP Feature Reply Packet with a VCP Feature ReplyList containing a Feature Reply List Item for each control supported bythe client. The values of 256 through 65534, for this field are reservedfor future use and presently not in use.

27. VCP Feature Reply Packet

The VCP Feature Reply Packet provides a means, mechanism, or method fora client to respond to a host request with the current setting of aspecific control parameter or all valid control parameters. Generally, aclient sends the VCP Feature Reply Packet in response to a Request VCPFeature Packet. This packet is useful to determine the current settingof a specific parameter, to determine the valid range for a specificcontrol, to determine if a specific control is supported by the client,or to determine the set of controls that are supported by the client. Ifa Request VCP Feature is sent that references a specific control that isnot implemented in the client then a VCP Feature Reply Packet isreturned with a single VCP Feature Reply List item corresponding to theunimplemented control that contains the appropriate error code. In oneembodiment, the client indicates an ability to support the VCP FeatureReply Packet using bit 13 of the Client Feature Capability field of theClient Capability Packet.

The format of the VCP Feature Reply Packet in one embodiment is shown inFIG. 70. As seen in FIG. 70, this type of packet is structured to havePacket Length, Packet Type, cClient ID, MCCS Version, Reply SequenceNumber, VCP Feature Reply List, and CRC fields. This type of packet isgenerally identified in one embodiment as a Type 129, as indicated inthe 2 byte type field.

The cClient ID field contains information reserved for a Client ID. Thisfield is reserved for future use and is generally set to zero. MCCSVersion field contains 2 bytes of information that specifies the Versionof the VESA MCCS Specification implemented by the client.

The 2 byte Reply Sequence Number field contains information or data thatspecifies the sequence number of the VCP Feature Reply Packets returnedby the client. The client returns one or more VCP Feature Reply Packetsin response to a Request VCP Feature Packet with an MCCS Control Codevalue of 65535. The client may spread or transfer the feature reply listover multiple VCP Feature Reply Packets. In this case, the client shouldassign a sequence number or identifier to each successive packet, andthe sequence numbers of the VCP Feature Reply Packets sent in responseto a single Request VCP Feature Packet typically starts at zero andincrements by one. The last VCP Feature Reply List Item in the last VCPFeature Reply Packet should contain an MCCS VCP Control Code value equalto 0xffff to identify that the packet is the last one and contains thehighest sequence number of the group of packets returned. If only oneVCP Feature Reply Packet is sent in response to a Request VCP FeaturePacket then the Reply Sequence Number in that single packet is generallyset at zero and the VCP Feature Reply List contains a list item havingan MCCS VCP Code in the VCP Feature Reply List Item equal to 0xffff. TheMaximum Value and Present Value fields (FIG. 71) in the VCP FeatureReply List Item packet are set to zero when the MCCS VCP Control Code isequal to 0xffff.

The Number of Features in List field contains 2 bytes that specify thenumber of VCP Feature Reply List Items that are in the VCP Feature ReplyList in this packet, while the VCP Feature Reply List field is a groupof bytes that contain one or more VCP Feature Reply List Items. Theformat of a single VCP Feature Reply List Item in one embodiment isshown in FIG. 71.

As shown in FIG. 71, each VCP Feature Reply List Item is 12 bytes inlength, and comprises the MCCS VCP Code, Result Code, Maximum Value, andPresent Value fields. The 2-byte MCCS VCP Code field contains data orinformation that specifies the MCCS VCP Control Code Parameterassociated with this list item. Only the Control Code values defined inthe VESA MCCS Specification version 2 and later are considered as validfor this embodiment. The 2-byte Result Code field contains informationthat specifies an error code related to the request for informationregarding the specified MCCS VCP Control. A value of ‘0’ in this fieldmeans there is no error, while a value of ‘1’ means the specifiedcontrol is not implemented in the client. Further values for this fieldof 2 through 65535 are currently reserved for future use andimplementation of other application contemplated by the art, but are notto be used for now.

The 4-byte Maximum Value field specifies the largest possible value towhich the specified MCCS Control can be set. If the requested control isnot implemented in the client this value is set to zero. If the valuereturned is less than 32 bits (4 bytes) in length, then the value iscast into a 32-bit integer leaving the most significant (unused) bytesset to zero. The 4-byte Present Value field contains information thatspecifies the present value of the specified MCCS VCP Continuous (C) ornon-continuous (NC) control. If the requested control is not implementedin the client or if the control is implemented but is a table (T) datatype, then this value is set to zero. If the value returned is less than32 bits (4 bytes) in length per the VESA MCCS specification then thevalue is cast into a 32-bit integer leaving the most significant(unused) bytes set to zero. If the specified MCCS VCP code correspondsto a non-continuous control or table data type, then the Maximum Valuefield is set or selected to be zero.

28. Set VCP Feature Packet

The Set VCP Feature Packet provides a means, mechanism, or method for ahost to set VCP control values for both continuous and non-continuouscontrols in a client. In one embodiment, the client indicates theability to support the Set VCP Feature Packet using bit 13 of the ClientFeature Capability field of the Client Capability Packet.

The format of the Set VCP Feature Packet in one embodiment is shown inFIG. 72. As seen in FIG. 72, this type of packet is structured to havePacket Length, Packet Type, hClient ID, MCCS VCP Code, Number of Valuesin List, Control Value List, and CRC fields. This type of packet isgenerally identified as a Type 130, as indicated in the 2 byte typefield, is 20 bytes long exclusive of the Packet Length field.

The hClient ID field again uses a 2-byte value to specify or act as aClient ID. This field is reserved for future use and is currently set tozero. The MCCS VCP Code field uses 2 bytes of information or values tospecify the MCCS VCP Control Code Parameter to be adjusted. The 2-byteNumber of Values in List Field contains information or values thatspecify the number of 16-bit values that exist in the Control ValueList. The Control Value List will usually contain one item unless theMCCS Control Code relates to a table in the client. In the case ofnon-table-related controls, The Control Value List will contain a valuethat specifies the new value to be written to the control parameterspecified by the MCCS VCP Code field. For table-related controls theformat of the data in the Control Value List is specified by theparameter description of the specified MCCS VCP Code. If the listcontains values that are larger than one byte, then theleast-significant byte is transmitted first, consistent with the methoddefined elsewhere. Finally, the 2-byte CRC field contains a 16-bit CRCof all bytes in the packet including the Packet Length.

29. Request Valid Parameter Packet

The Request Valid Parameter Packet is used as a means or structureuseful to request that a client return a Valid Parameter Reply Packetcontaining a list of parameters supported by the specifiednon-continuous (NC) or table (T) control. This packet should onlyspecify non-continuous controls or controls that relate to a table inthe client, and not specify a MCCS VCP Code value of 65535 (0xffff) tospecify all controls. If a non-supported or invalid MCCS VCP Code isspecified then an appropriate error value is returned in the ValidParameter Reply Packet. In one embodiment, the client indicates anability to support the Request Valid Parameter Packet using bit 13 ofthe Client Feature Capability field of the Display Capability Packet.

The format of the Request Valid Parameter Packet in one embodiment isshown in FIG. 73. As seen in FIG. 73, this type of packet is structuredto have Packet Length, Packet Type, hClient ID, MCCS VCP Code, and CRCfields. This type of packet is generally identified in one embodiment asa Type 131, as indicated in the 2 byte type field.

The packet length, as indicated in the 2-bytes Packet Length Field isgenerally set to have a total number of bytes in the packet, notincluding the packet length field of 8. The hClient ID again specifiesthe Client ID, but is currently reserved for future use, as would beapparent to one skilled in the art, and is set to zero. The 2-byte MCCSVCP Code Filed contains a value that specifies the non-continuous MCCSVCP Control Code Parameter to be queried. The value in this field shouldcorrespond to a non-continuous control that is implemented in theclient. The values 256 through 65535 (0xffff) are typically reserved orconsidered as invalid, and are considered as an unimplemented control inthe error response.

30. Valid Parameter Reply Packet

A Valid Parameter Reply Packet is sent in response to a Request ValidParameter Packet. It is used as a means, method, or structure toidentify the valid settings for a non-continuous MCCS VCP control or acontrol that returns the contents of a table. If the control relates toa table in the client, then the VCP Parameter Reply List simply containsthe specific list of sequential table values that were requested. If thecontents of the table cannot fit into a single Valid Parameter ReplyPacket then multiple packets with sequential Reply Sequence Numbers canbe sent by the client. In one embodiment, a client indicates an abilityto support a Valid Parameter Reply Packet using bit 13 of the ClientFeature Capability field of the Client Capability Packet.

A host may request the contents of a table in the following manner: thehost sends a Set VCP Feature Packet containing the necessary or desiredparameters such as read/write parameter, LUT offset, and RGB selection;then a Request Valid Parameter Packet that specifies the desired controlis sent by the host; then the client returns one or more Valid ParameterReply Packets containing the table data. This sequence of operationsperforms a similar function as the table reading functions described inthe MCCS operation model.

If a specific client parameter is not supported by the client then inone embodiment the corresponding field of this packet will contain avalue of 255. For parameters that are used in the client, thecorresponding field should contain a value of the parameter in theclient.

The format of the Valid Parameter Reply Packet for one embodiment isshown in FIG. 74. As seen in FIG. 74, this type of packet is structuredto have Packet Length, Packet Type, cClient ID, MCCS VCP Code, ResponseCode, Reply Sequence Number, Number Values in List, VCP Parameter ReplyList, and CRC fields. This type of packet is generally identified forone embodiment as a Type 132, as indicated in the 2 byte type field.

The cClient ID field is reserved for the future Client ID, as is knownfrom the above discussions, while the 3-byte MCCS VCP Code Packetcontains a value that specifies a non-continuous MCCS VCP Control CodeParameter that is described by this packet. If an invalid MCCS VCPControl Code is specified by a Request Valid Parameter Packet, then thesame invalid parameter value will be specified in this field with theappropriate value in the Response Code field. If the MCCS Control Codeis invalid then the VCP Parameter Reply List will have zero length.

The Response Code field contains 2 bytes of information or values thatspecify the nature of the response related to the request forinformation regarding the specified MCCS VCP Control. If the value inthis field is equal to 0, then no error is considered as being presentfor this data type, and the last Valid Parameter Reply Packet in thesequence is sent, it having the highest Reply Sequence Number. If thevalue in this field is equal to 1, then no error is considered as beingpresent, but other Valid Parameter Reply Packets will be sent that havehigher sequence numbers. If the value in this field is equal to 2, thenthe specified control is not considered as being implemented in theclient. If the value in this field id equal to 3, then the specifiedcontrol is not a non-continuous control (it is a continuous control thatalways has a valid set of all values from zero to its maximum value).Values for this field equal to 4 through 65535 are reserved for futureuse and generally not to be used.

The 2-byte Reply Sequence Number field specifies the sequence number ofthe Valid Parameter Reply Packets returned by the client. The clientreturns one or more Valid Parameter Reply Packets in response to aRequest Valid Parameter Packet. The client may spread the VCP ParameterReply List over multiple Valid Parameter Reply Packets. In this lattercase, the client will assign a sequence number to each successivepacket, and set the Response Code to 1 in all but the last packet in thesequence. The last Valid Parameter Reply Packet in the sequence willhave the highest Reply Sequence Number and the Response Code contains avalue of 0.

The 2-byte Number of Values in List field specifies the number of 16-bitvalues that exist in the VCP Parameter Reply List. If the Response Codeis not equal to zero then the Number of Values in List parameter iszero. The VCP Parameter Reply List field contains a list of 0 to 327602-byte values that indicate the set of valid values for thenon-continuous control specified by the MCCS Control Code field. Thedefinitions of the non-continuous control codes are specified in theVESA MCCS Specification. Finally, in this embodiment, the CRC fieldcontains a 16-bit CRC of all bytes in the packet including the PacketLength.

Scaled Video Stream Images

The MDDI or protocol mechanism, structure, means, or method providessupport for scaled video stream images that allow the host to send animage to the client that is scaled larger or smaller than the originalimage, and the scaled image is copied to a main image buffer. Anoverview of the Scaled Video Stream functionality and associatedprotocol support is provided elsewhere. An ability to support scaledvideo streams is defined by or within the Scaled Video Stream CapabilityPacket, which is sent in response to a Request Specific Status Packet.

The header of the Scaled Video Stream packet discussed below is slightlydifferent from the simpler Video Stream Packet whose header contains theentire context necessary to display the image. The Scaled Video Streampacket uses a setup packet to define the parameters of the source anddestination window size and position, and a separate Scaled Video StreamPacket to transmit the pixel data. A client allocates internal storageassociated with each stream to store the stream parameters from thesetup packet and part of the pixel data associated with each stream. Theamount of storage required for each stream will vary depending on thesize of the source and destination images and the values specified inthe setup packet. For this reason the protocol is designed to allow theclient to implement dynamic memory allocation for the assignment ofstorage associated with each scaled video stream.

It is useful to send a video stream to a display having a size native tothe program source and have the display scale and position the image ina manner appropriate for the specific end application. Theimplementation for real-time scaling of multiple video images issufficiently complex to make support of this feature optional in theclient.

31. Scaled Video Stream Capability Packet

The Scaled Video Stream Capability Packet defines the characteristics ofthe scaled video stream source image in or used by a client. The formatof the Scaled Video Stream Capability Packet is shown generally in FIG.75. As seen in FIG. 75, in one embodiment, a Scaled Video StreamCapability Packet is structured to have Packet Length, Packet Type,cClient ID, Max Number of Streams, Source Max X Size, Source Max Y size,RGB Capability, Monochrome Capability, Reserved 1, Y Cr Cb Capability,Reserved 2, and CRC fields. The packet length, in one embodiment, isselected to be a fixed 20 bytes, as shown in the length field, includingthe 2-byte cClient ID field, which is reserved for use for a Client ID,otherwise set to zero, and the CRC field. In one embodiment, the clientindicates an ability to support the Scaled Video Stream CapabilityPacket using a parameter value of 143 in the Valid Parameter Reply Listof the Valid Status Reply List Packet.

The 2-byte Maximum Number of Streams field contains a value to identifythe maximum number of simultaneous scaled video streams that may beallocated at one time. In one embodiment, a client should deny a requestto allocate a scaled video stream if the maximum number of scaled videostreams is already allocated. If less than the maximum number of scaledvideo streams are allocated the client may also deny an allocationrequest based on other resource limitations in the client.

The Source Maximum X Size and Y size fields (2 bytes) specify values forthe maximum width and height, respectively, of the scaled video streamsource image expressed as a number of pixels.

The RGB Capability field uses values to specify the number of bits ofresolution that can be displayed in RGB format. If the scaled videostream cannot use the RGB format then this value is set equal to zero.The RGB Capability word is composed of three separate unsigned valueswith: Bits 3 through 0 defining a maximum number of bits of blue (theblue intensity) in each pixel, Bits 7 through 4 defining the maximumnumber of bits of green (the green intensity) in each pixel, and Bits 11through 8 defining the maximum number of bits of red (the red intensity)in each pixel, while Bits 15 through 12 are reserved for future use infuture capability definitions, and are generally set to zero.

The 1-byte Monochrome Capability field contains a value that specifiesthe number of bits of resolution that can be displayed in monochromeformat. If the scaled video stream cannot use the monochrome format thenthis value is set to zero. Bits 7 through 4 are reserved for future useand should, therefore, be set to zero (‘0’) for current applications,although this may change over time, as will be appreciated by thoseskilled in the art. Bits 3 through 0 define the maximum number of bitsof grayscale that can exist in each pixel. These four bits make itpossible to specify that each pixel consists of 1 to 15 bits. If thevalue is zero, then the monochrome format is not supported by the scaledvideo stream.

The Reserved 1 field (here 1 byte) is reserved for future use inproviding values related to the Scaled Video Stream Packet informationor data. Therefore, currently, all bits in this field are set to a logic‘0’. One purpose of this field is to cause all subsequent 2-byte fieldsto align to a 16-bit word address and cause 4-byte fields to align to a32-bit word address.

The 2-byte Y Cb Cr Capability field contains values that specify thenumber of bits of resolution that can be displayed in Y Cb Cr format. Ifthe scaled video stream cannot use the Y Cb Cr format then this value iszero. The Y Cb Cr Capability word is composed of three separate unsignedvalues with: Bits 3 through 0 defining the maximum number of bits thatspecify the Cr sample; Bits 7 through 4 defining the maximum number ofbits that specify the Cb sample; Bits 11 through 8 defining the maximumnumber of bits specify the Y sample; and with Bits 15 through 12 beingreserved for future use and is generally set to zero.

The 1-byte Capability Bits field contains a set of flags that specifycapabilities associated with the scaled video stream. The flags aredefined as follows: Bit 0 covers Pixel data in the Scaled Video StreamPacket can be in a packed format. An example of packed and byte-alignedpixel data is shown earlier in FIG. 12. Bit 1 is reserved for future useand is generally set to zero; Bit 2 is also reserved for future use andis set to zero; Bit 3 covers scaled video streams that can be specifiedin the color map data format. The same color map table is used for thescaled video streams as is used for the main image buffer and thealpha-cursor image planes. The color map is configured using the ColorMap Packet described elsewhere; and Bits 7 through 4 are reserved forfuture use and are generally set to be zero.

The Reserved 2 field (here 1 byte) is reserved for future use inproviding values related to the Scaled Video Stream Packet informationor data. Therefore, currently, all bits in this field are set to a logic‘0’. One purpose of this field is to cause all subsequent 2-byte fieldsto align to a 16-bit word address and cause 4-byte fields to align to a32-bit word address.

32. Scaled Video Stream Setup Packet

The Scaled Video Stream Setup Packet provides a means, structure, ormethod used to define the parameters of the scaled video stream and theclient uses the information to allocate internal storage for bufferingand scaling of the image. A stream may be de-allocated by sending thispacket with the X Image Size and Y Image Size fields equal to zero.Scaled video streams that have been de-allocated may be reallocatedlater with the same or different stream parameters. In one embodiment aclient indicates an ability to support the Scaled Video Stream SetupPacket using a parameter value of 143 in the Valid Parameter Reply Listof the Valid Status Reply List Packet, and by using a non-zero value inthe Maximum Number of Streams field of the Scaled Video StreamCapability Packet.

The format of the Scaled Video Stream Setup Packet is shown generally inFIG. 76. As seen in FIG. 76, in one embodiment, a Scaled Video StreamSetup Packet is structured to have Packet Length Packet Type, hClient,Stream ID, Visual Data Format Descriptor, Pixel Data Attributes, X LeftEdge, Y Top Edge, X Right Edge, Y Bottom Edge, X Image Size, Y ImageSize, and CRC fields.

The 2-byte Packet Length field specifies the total number of bytes inthe packet not including the packet length field. In one embodiment,this packet length is fixed at 24. The 2-byte Packet Type field employsa value of 136 to identify the packet as a Scaled Video Stream SetupPacket. The 2-byte hClient ID field is reserved for future use as aClient ID, and is generally set to an all bits at logic-zero value forthe moment, or until a protocol user determines what ID values are to beused, as would be known.

The Stream ID field uses 2 bytes to specify a unique identifier for theStream ID. This value is assigned by the host and ranges in value fromzero to the maximum Stream ID value specified in the Client CapabilityPacket. The host must manage the use of Stream ID values carefully toensure that each active stream is assigned a unique value, and thatstreams that are no longer active are de-allocated or reassigned.

In one embodiment, the Video Data Format Descriptor field uses 2 bytesto specify the format of each pixel in the Pixel Data in the presentstream in the present packet. The pixel data format should comply withat least one of the valid formats for a alpha-cursor image plane asmight be defined in an Alpha-Cursor Image Capability Packet, or otherpre-defined image pattern, as will generally be defined within the otherpackets discussed above. The Video Data Format Descriptor defines thepixel format for the current packet only and does not imply that aconstant format will continue to be used for the lifetime of aparticular video stream. FIG. 11 illustrates an embodiment of how theVideo Data Format Descriptor is coded, and as discussed above for otherpackets.

In one embodiment, the 2-byte Pixel Data Attributes field has valuesthat are interpreted as follows with Bits 1 and 0 being reserved forfuture use, generally set to zero for now, and Bit 2 indicates whetheror not the Pixel Data is in interlace format. When Bit 2 is 0, then thePixel Data is in the standard progressive format. The row number (pixelY coordinate) is incremented by 1 when advancing from one row to thenext. When Bit 2 is 1, then the Pixel Data is in interlace format. Therow number (pixel Y coordinate) is incremented by 2 when advancing fromone row to the next.

Bit 3 indicates whether or not the Pixel Data is in alternate pixelformat. This is similar to the standard interlace mode enabled by bit 2,but the interlacing is vertical instead of horizontal. When Bit 3 is 0,the Pixel Data is in the standard progressive format. The column number(pixel X coordinate) is incremented by 1 as each successive pixel isreceived. When Bit 3 is 1, then the Pixel Data is in alternate pixelformat. The column number (pixel X coordinate) is incremented by 2 aseach pixel is received.

Bits 4 through 15 are also reserved for future use, and are generally beset to logic-zero level or values for current applications or designs.

33. Scaled Video Stream Acknowledgement Packet

The Scaled Video Stream Acknowledgement Packet allows a client toacknowledge the receipt of a Scaled Video Stream Setup Packet. Theclient can indicate an ability to support the Scaled Video StreamAcknowledgement Packet via a parameter value of 143 in the ValidParameter Reply List of the Valid Status Reply List Packet and via anon-zero value in the Maximum Number of Streams field of the ScaledVideo Stream Capability Packet.

The format of the Scaled Video Stream Acknowledgement Packet is showngenerally in FIG. 77. As seen in FIG. 77, in one embodiment, a ScaledVideo Stream Acknowledgement Packet is structured to have Packet Length,Packet Type, cClient, Stream ID, ACK Code, and CRC fields. The 2-bytePacket Length field is used to specify the total number of bytes,excluding the packet length field, with a value of 10 for this packettype, while a Packet Type of 137 identifies a packet as a Scaled VideoStream Acknowledgement Packet.

The 2-byte cClient ID field is reserved for future use for the ClientID, and is generally set to zero. The 2-byte Stream ID field specifies aunique identifier for the Stream ID. This is the same value assigned bythe host in the Scaled Video Stream Setup Packet.

The 2-byte Ack Code field provides values containing a code thatdescribes the outcome of an attempt to update the specified scaled videostream. In one embodiment, the codes are defined as follows:

0—The stream allocation attempt was successful.

1—the stream de-allocation attempt was successful.

2—invalid attempt to allocate a stream ID that has already beenallocated.

3—invalid attempt to de-allocate a stream ID that is alreadyde-allocated.

4—the client does not support scaled video streams

5—the stream parameters are inconsistent with the capability of theclient.

6—stream ID value larger than the maximum value allowed by the client.

7—insufficient resources available in the client to allocate thespecified stream.

The 2-byte CRC field contains the CRC of all bytes in the packetincluding the Packet Length.

34. Scaled Video Stream Packet

The Scaled Video Stream Packet is used to transmit the pixel dataassociated with a specific scaled video stream. The size of the regionreference by this packet is defined by the Scaled Video Stream SetupPacket. The client can indicate an ability to support the Scaled VideoStream Packet via a parameter value of 143 in the Valid Parameter ReplyList of the Valid Status Reply List Packet and using a successful scaledvideo stream allocation response in the Ack Code field of the ScaledVideo Stream Acknowledgement Packet.

The format of one embodiment of the Scaled Video Stream Packet is showngenerally in FIG. 78. As seen in FIG. 78, a Scaled Video Stream Packetis structured to have Packet Length, Packet Type, hClient ID, Stream ID,Pixel data Attributes, Pixel Count, Parameter CRC, Pixel Data, and PixelData CRC fields. The 2-byte Packet Type field uses a value of 18 toidentify a packet as a Scaled Video Stream Packet. The hClient ID fieldis reserved for the Client ID, and generally set to zero. As before, the2-byte Stream ID field specifies a unique identifier for the Stream ID.This value is specified by the host in the Scaled Video Stream SetupPacket and confirmed in the Scaled Video Stream Acknowledgement Packet.In one embodiment, the 2-byte Pixel Data Attributes field has valuesthat specify pixel data routing and display updating or bufferlocations. These values are, in one embodiment,

In one embodiment, the 2-byte Pixel Data Attributes field has valuesthat specify pixel data routing and display updating or bufferlocations. These values are, in one embodiment, interpreted as followswith Bits 1 and 0 selecting the display where the pixel data is to berouted. For bit values of ‘11’ or ‘00’ pixel data is displayed to or forboth eyes, for bit values ‘10’, pixel data is routed only to the lefteye, and for bit values ‘01’, and pixel data is routed only to the righteye.

Bits 7 and 6 are the Display Update Bits that specify the frame bufferwhere the pixel data is to be written. The effects of the Frame UpdateBits are described in more detail elsewhere. When Bits [7:6] are ‘01’,the Pixel data is written to the offline image buffer. When Bits [7:6]are ‘00’, the Pixel data is written to the image buffer used to refreshthe display. When Bits [7:6] are ‘11’, the Pixel data is written to allimage buffers. If Bits [7:6] are ‘10’, this is treated as an invalidvalue. These bits are currently reserved for future use. In thissituation, Pixel data would be ignored and not written to any of theimage buffers. Bits 2 through 5 and 8 through 15 are reserved for futureuse and are generally be set to logic-zero level or values.

The 2-byte Pixel Count field specifies the number of pixels in the PixelData field below. The 2-byte Parameter CRC field has the CRC of allbytes from the Packet Length to the Pixel Count. If this CRC fails tocheck then the entire packet is discarded. The 2-byte Pixel Data fieldcontains the raw video information that is to be scaled and thendisplayed. Data is formatted in the manner described by the Video DataFormat Descriptor field. The data is transmitted a row at a time asdefined previously.

The 2-byte Pixel Data CRC field contains a CRC of only the Pixel Data.If this CRC fails to check then the Pixel Data can still be used but theCRC error count is incremented.

35. Request Specific Status Packet

The Request Specific Status Packet provides a means, mechanism, ormethod for a host to request that the client send a capability or statuspacket back to the host as specified in this packet. The client returnsthe packet of the specified type in the next Reverse Link EncapsulationPacket. The client will generally set bit 17 in the Client FeatureCapability field of the Client Capability Packet if the client has thecapability to respond to the Request Specific Status Packet. Aconvenient method for the host to use to determine all of the types ofstatus packets that a client can return or transfer is to use the ValidStatus Reply List Packet described elsewhere. The client can indicate anability to respond with the Valid Status Reply List Packet using bit 21of Client Feature Capability field of the Client Capability Packet.

The format of one embodiment of a Request Specific Status Packet isshown generally in FIG. 79. As seen in FIG. 79, a Request SpecificStatus Packet is structured to have Packet Length, Packet Type, hClientID, Status Packet ID, and CRC fields. Packet Length field specifies thetotal number of bytes in the packet not including the packet lengthfield, and is generally fixed at a value of 10 for this packet type. APacket Type of 138 identifies the packet as a Request Specific StatusPacket. The hClient ID field (2 bytes) is reserved for future use for aClient ID, and is set to zero for now, while a 2-byte Status Packet IDfield specifies the type of capability or status packet that the clientis going to send to the host. Typical packets types are:

-   -   66—Client Capability Packet is sent by the client.    -   133—Alpha-Cursor Image Capability Packet is sent by the client.    -   139—Valid Status Reply List Packet is sent that identifies the        exact types of capability and status packets that the client can        send.    -   140—Packet Processing Delay Parameters Packet is sent by the        client.    -   141—Personal Client Capability Packet is sent by the client.    -   142—Client Error Report Packet is sent by the client.    -   143—Scaled Video Stream Capability Packet is sent by the client.    -   144—Client Identification Packet is sent by the client.

Packet Types 56 through 63 can be used for manufacturer-specificcapability and status identifiers.

The CRC field again contains a CRC of all bytes in the packet includingthe Packet Length.

36. Valid Status Reply List Packet

The Valid Status Reply List Packet provides the host with a structure,means, or method to have a list of status and capability packets thatthe client has the capability to return. A client can indicate anability to support the Valid Status Reply List Packet using bit 21 ofClient Feature Capability field of the Client Capability Packet.

The format of one embodiment of a Valid Status Reply List Packet isshown generally in FIG. 80. As seen in FIG. 80, a Valid Status ReplyList Packet is structured to have Packet Length, Packet Type, cClientID, Number of Values in List, Valid Parameter Reply List, and CRCfields. The packet length for this type of packet is generally fixed ata value of 10, and a type value of 139 identifies the packet as a ValidStatus Reply Packet. The cClient ID field is reserved for future use asthe Client ID, and is generally be set to zero. The 2-byte Number ofValues in List field specifies the number of items in the followingValid Parameter Reply List.

The Valid Parameter Reply List field contains a list of 2-byteparameters that specify the types of capability or status packets thatthe client can send to the host. If the client has indicated that it canrespond to the Request Specific Status Packet (using bit 21 of theClient Feature Capability field the in the Client Capability Packet)then it is capable of sending at least the Client Capability Packet(Packet Type=66) and the Valid Status Reply List Packet (PacketType=139). The Packet Types that can be sent by the client and may beincluded in this list, along with their respective assignments forpurposes of the one embodiment, are:

-   -   66—Client Capability Packet.    -   133—Alpha-Cursor Image Capability Packet.    -   139—Valid Status Reply List Packet, that identifies the exact        types of capability and status packets that the client can send.    -   140—Packet Processing Delay Parameters Packet.    -   141—Personal Display Capability Packet.    -   142—Client Error Report Packet.    -   143—Scaled Video Stream Capability Packet.    -   144—Client Identification Packet.    -   145—Alternate Display Capability Packet.

Packet Types 56 through 63 can be used for manufacturer-specificcapability and status identifiers.

The CRC field contains a CRC of all bytes in the packet including thePacket Length.

37. Packet Processing Delay Parameters Packet

The Packet Processing Delay Parameters Packet provides a set ofparameters to allow the host to compute the time required to completethe processing associated with the reception of a specific packet type.Some commands sent by the host cannot be completed by the client in zerotime. The host may poll the status bits in the Client Request and StatusPacket to determine if certain functions have been completed by theclient, or the host may compute the completion time using the parametersreturned by the client in the Packet Processing Delay Parameters Packet.The client can indicate an ability to support the Packet ProcessingDelay Parameters Packet using a parameter value of 140 in the ValidParameter Reply List of the Valid Status Reply List Packet.

The format of one embodiment of a Packet Processing Delay ParametersPacket is shown generally in FIG. 81A. As seen in FIG. 81A, a PacketProcessing Delay Parameters Packet is structured to have Packet Length,Packet Type, cClient ID, Number of List Items, Delay Parameters List,and CRC fields. The packet length for this type of packet is generallyfixed at a value of 10, and a type value of 140 identifies the packet asa Packet Processing Delay Parameters Packet. The cClient ID field isreserved for future use as the Client ID, and is generally be set tozero. The 2-byte Number of List items field specifies the number ofitems in the following Valid Parameter Reply List.

The Delay Parameters List field is a list containing one or more DelayParameter List items. The format for one embodiment of a single DelayParameters List item is shown in FIG. 81B, where Packet Type for Delay,Pixel Delay, Horizontal Pixel Delay, Vertical Pixel Delay, and FixedDelay fields are shown.

Each Delay Parameters List Item is generally restricted to be 6 bytes inlength, and is further defined as follows. The 2-byte Packet Type forDelay field specifies the Packet Type for which the following delayparameters apply. The Pixel Delay field (1 byte) comprises an index to adelay value. The value read from the table is multiplied by the totalnumber of pixels in the destination field of the packet. The totalnumber of pixels is the width times the height of the destination areaof the bitmap referenced by the packet. The 1-byte Horizontal PixelDelay field contains a value that is an index to a delay value table(same table as DPVL). The value read from the table is multiplied by thewidth (in pixels) of the destination field of the packet. The 1-byteVertical Pixel Delay field contains a value that is an index to a delayvalue table (generally uses the same table as DPVL). The value read fromthe table is multiplied by the height (in pixels) of the destinationfield of the packet.

The Fixed Delay field uses 1 byte as an index to a delay value table(same table as DPVL). The value read from the table is a fixed delayparameter that represents a time required to process the packet that isunrelated to any parameter values specified in the packet. The totaldelay, or packet processing completion time delay, is determinedaccording to the relationship:

Delay = (PacketProcessingDelay(PixelDelay)·TotalPixels) +(PacketProcessingDelay(HorizontalPixelDelay)·Width) +(PacketProcessingDelay(VerticalPixelDelay)·Height) +PacketProcessingDelay(FixedDelay)

For some packets, the Total Pixels, Width, or Height do not applybecause those parameters are not referenced in the corresponding packet.In those cases, the corresponding Pixel Delay parameter is generally setto be zero.

38. Personal Display Capability Packet

The Personal Display Capability Packet provides a set of parameters thatdescribe the capabilities of a personal display device, such as ahead-mounted display or display glasses. This enables the host tocustomize the display information according to the specific capabilitiesof a client. A client, on the other hand, indicates an ability to sendthe Personal Display Capability Packet by using a correspondingparameter in the Valid Parameter Reply List of the Valid Status ReplyList Packet.

The format of one embodiment of a Personal Display Capability Packet isshown generally in FIG. 82. As seen in FIG. 82, a Personal DisplayCapability Packet is structured to have Packet Length, Packet Type,cClient ID, Sub-Pixel Layout, Pixel Shape, Horizontal Field of View,Vertical Field of View, Visual Axis Crossing, Lft./Rt. Image, SeeThrough, Maximum Brightness, Optical Capability, Minimum IPD, MaximumIPD, Points of IField of Curvature List and CRC fields. In oneembodiment, the Packet Length field value is fixed at 68. A Packet Typevalue of 141 identifies a packet as a Personal Display CapabilityPacket. The cClient ID field is reserved for future use and is generallyset to zero for now.

The Sub-Pixel Layout field specifies the physical layout of a sub-pixelfrom top to bottom and left to right, using values of: 0 to indicatethat a sub-pixel layout is not defined; 1 to indicate red, green, bluestripe; 2 to indicate blue, green, red stripe; 3 to indicate aquad-pixel, having a 2-by-2 sub-pixel arrangement of red at the topleft, blue at the bottom right, and two green sub-pixels, one at thebottom left and the other at the top right; 4 to indicate a quad-pixel,with a 2-by-2 sub-pixel arrangement of red at the bottom left, blue atthe top right, and two green sub-pixels, one at the top left and theother at the bottom right; 5 to indicate a Delta (Triad); 6 to indicatea mosaic with red, green, and blue overlayed (e.g. LCOS display withfield-sequential color); and with values 7 through 255 being generallyreserved for future use.

The Pixel Shape field specifies the shape of each pixel that is composedof a specific configuration sub-pixels, using a value of: 0 to indicatethat a sub-pixel shape is not defined; 1 to indicate round; 2 toindicate square; 3 to indicate rectangular; 4 to indicate oval; 5 toindicate elliptical; and with the values 6 through 255 being reservedfor future use in indicating desired shapes, as can be appreciated byone skilled in the art.

A 1-byte Horizontal Field of View (HFOV) field specifies the horizontalfield of view in 0.5 degree increments (e.g. if the HFOV is 30 degrees,this value is 60). If this value is zero then the HFOV is not specified.

A 1-byte Vertical Field of View (VFOV) field specifies the verticalfield of view in 0.5 degree increments (e.g. if the VFOV is 30 degrees,this value is 60). If this value is zero then the VFOV is not specified.

A 1-byte Visual Axis Crossing field specifies the visual axis crossingin 0.01 diopter (1/m) increments (e.g. if the visual axis crossing is2.22 meters, this value is 45). If this value is zero then the VisualAxis Crossing is not specified.

A 1-byte Left/Right Image Overlap field specifies the percentage ofoverlap of the left and right image. The allowable range of the imageoverlap in percent is 1 to 100. Values of 101 to 255 are invalid and aregenerally not to be used. If this value is zero then the image overlapis not specified.

A 1-byte See Through field specifies the see-through percentage ofimage. The allowable range of see-through in percent is 0 to 100. Valuesof 101 to 254 are invalid and are not to be used. If this value is 255then the see-through percentage is not specified. A 1-byte MaximumBrightness field specifies the maximum brightness in increments of 20nits (e.g. if the maximum brightness is 100 nits, this value is 5). Ifthis value is zero then the maximum brightness is not specified.

A 2-byte Optical Capability Flags field contains various fields thatspecify optical capabilities of the display. These bit values aregenerally assigned according to:

Bits 15 through 5 are reserved for future use and are generally set to alogic-zero state.

Bit 4 selects Eye Glass Focus Adjustment, with a value of ‘0’ meaningthe display has no eye glass focus adjustment, and a value of ‘1’meaning the display has an eye glass focus adjustment.

Bits 3 through 2 select a Binocular Function according to: a value of 0means the display is binocular and can display 2-dimensional (2D) imagesonly; 1 means the display is binocular and can display 3-dimensional(3D) images; 2 means the display is monocular, and 3 is reserved forfuture use.

Bits 1 through 0 select Left-Right Field Curvature Symmetry, with avalue of 0 meaning Field curvature not defined. If this field is zerothen all field curvature values from A1 through E5 are set to zeroexcept for point C3, which specifies a focal distance of the display oris to be set to zero to indicate the focal distance is not specified. Avalue of 1 means Left and Right displays have the same symmetry; 2 meansLeft and right displays are mirrored on the vertical axis (column C);and 3 is reserved for future use.

The 1-byte Inter-Pupillary Distance (IPD) Minimum field specifies theminimum inter-pupillary distance in millimeters (mm). If this value iszero then the minimum inter-pupillary distance is not specified. The1-byte Inter-Pupillary Distance (IPD) Maximum field specifies themaximum inter-pupillary distance in millimeters (mm). If this value iszero then the maximum inter-pupillary distance is not specified.

The Points of Field Curvature List field contains a list of 25 2-byteparameters that specify the focal distance in thousandths of a diopter(1/m) with a range of 1 to 65535 (e.g. 1 is 0.001 diopters and 65535 is65.535 diopters). The 25 elements in the Points of Field Curvature Listare labeled A1 through E5 as shown in FIG. 83. The points are to beevenly distributed over the active area of the display. Column Ccorresponds to the vertical axis of the display and row 3 corresponds tothe horizontal axis of the display. Columns A and E correspond to theleft and right edges of the display, respectively. And rows 1 and 5correspond to the top and bottom edges of the display, respectively. Theorder of the 25 points in the list is: A1, B1, C1, D1, E1, A2, B2, C2,D2, E2, A3, B3, C3, D3, E3, A4, B4, C4, D4, E4, A5, B5, C5, D5, E5.

The CRC field contains a CRC of all bytes in the packet including thePacket Length.

39. Client Error Report Packet

The Client Error Report Packet acts as a mechanism or means for allowinga client to provide a list of operating errors to the host. The clientmay detect a wide range of errors in the course of its normal operationas a result of receiving certain commands from the host. Examples ofthese errors include: the client may have been commanded to operate in amode that it does not support, the client may have received a packetcontaining certain parameters that are out of range or are beyond thecapability of the client, the client may have been commanded to enter amode in an improper sequence. The Client Error Report Packet may be usedto detect errors during normal operation, but is most useful to thesystem designer and integrator to diagnose problems in development andintegration of host and client systems. A client indicates its abilityto send a Client Error Report Packet using a parameter value of 142 inthe Valid Parameter Reply List of the Valid Status Reply List Packet.

The format of one embodiment of a Client Error Report Packet is showngenerally in FIG. 84A. As seen in FIG. 84A, a Client Error Report Packetis structured to have Packet Length, Packet Type, cClient ID, Number ofList Items, Error Code List, and CRC fields. A Packet Type value of 142identifies a packet as a Client Error Report Packet. The cClient IDfield is reserved for future use and is generally set to zero for now.The Number of List Items field (2 bytes) specifies the number of itemsin the following Error Code List. The Error Code List field (here 8bytes) is a list containing one or more Error Report List items. Theformat of a single Error Report List item is shown in FIG. 87B.

In one embodiment, as shown in FIG. 87B, each Error Report List Item isexactly 4 bytes in length, and has a structure in one embodimentcomprising: a 2-byte Display Error Code field that specifies the type oferror being reported, a 2-byte Error Sub-code field specifies a greaterlevel of detail regarding the error defined by the Client Error Codepacket. The specific definition of each Client Error Code is defined bythe manufacturer of the client. An Error Sub-code does not have to bedefined for every Display Error Code, and in those cases where the ErrorSub-code is not defined the value is set to zero. The specificdefinition of each Error Sub-code is defined by the manufacturer of theclient.

40. Client Identification Packet

The Client Identification Packet allows a client to return identifyingdata in response to a Request Specific Status Packet. In one embodiment,a client indicates an ability to send the Client Identification Packetusing a parameter value of 144 in the Valid Parameter Reply List of theValid Status Reply List Packet. It is useful for the host to be able todetermine the client device manufacturer name and model number byreading this data from the client. The information may be used todetermine if the client has special capabilities that cannot describedin the Client Capability Packet. There are potentially two methods,means, or mechanisms for reading identification information from theclient. One is through use of the Client Capability Packet, whichcontains fields similar to those in the base EDID structure. The othermethod is through use of the Client Identification Packet that containsa richer set of information compared to the similar fields in the ClientCapability Packet. This allows a host to identify manufacturers thathave not been assigned a 3-character EISA code, and allows serialnumbers to contain alphanumeric characters.

The format of one embodiment of a Client Identification Packet is showngenerally in FIG. 85. As seen in FIG. 85, a Client Identification Packetis structured to have Packet Length, Packet Type, cClient ID, Week ofMfr, Year of Mfr., Length of Mfr Name, Length of Product Name, Length ofSerial Number, Manufacturer Name String, Product Name String, SerialNumber String, and CRC fields.

The 2 byte Packet Type field contains a value that identifies the packetas a Client Identification Packet. This value is selected to be 144 inone embodiment. The cClient ID field (2 bytes) again is reserved forfuture use for the Client ID, and is generally set to zero. The CRCfield (2 bytes) contains a 16-bit CRC of all bytes in the packetincluding the Packet Length.

A 1-byte Week of Manufacture field contains a value that defines theweek of manufacture of the display. In at least one embodiment, thisvalue is in the range of 1 to 53 if it is supported by the client. Ifthis field is not supported by the client, then it is generally set tozero. A 1-byte Year of Manufacture field contains a value that definesthe year of manufacture of the client (display). This value is an offsetfrom the year 1990 as a starting point, although other base years couldbe used. Years in the range of 1991 to 2245 can be expressed by thisfield. Example: the year 2003 corresponds to a Year of Manufacture valueof 13. If this field is not supported by the client it should be set toa value of zero.

The Length of Mfr Name, Length of Product Name, and Length of SerialNumber fields each contain 2-byte values that specify the length of theManufacturer Name String field including any null termination or nullpad characters, the length of the Product Name String field includingany null termination or null pad characters, and the length of theSerial Number String field including any null termination or null padcharacters, respectively.

The Manufacturer Name String, Product Name String, and Serial NumberString fields each contain a variable number of bytes specified by theLength Mfr Name, Product Name, and Serial Number fields, respectively,that contain an ASCII string that specifies the manufacturer, productname, and alphanumeric serial number of the display, respectively. Eachof these strings is terminated by at least one null character.

41. Alternate Display Capability Packet

The Alternate Display Capability Packet is used as a means, structure,or method to indicate the capability of alternate displays attached tothe MDDI client controller. It is sent in response to a Request SpecificStatus Packet. When prompted, a client device sends an Alternate DisplayCapability Packet. for each alternate display that is supported. If aclient has more than one alternate display, then the client should send,generate, or provide multiple Alternate Display Capability Packets, onefor each display, in response to a single Request Specific StatusPacket, although some configurations can use multiple Request SpecificStatus Packets as desired, although this is less efficient. The clientmay send Alternate Display Capability Packets in what can be referred toas a “non-sequential order” based on the value of the Alt Display Numberfield. The client can indicate an ability to send the Alternate DisplayCapability Packet via a parameter value of 145 in the Valid ParameterReply List of the Valid Status Reply List Packet.

For MDDI systems operated in internal mode it may be common to have morethan one display connected to an MDDI client controller. An exampleapplication is a mobile phone with a large display on the inside of theflip and a smaller display on the outside. It is not necessary for aninternal mode client to return an Alternate Display Capability Packetfor two potential reasons. First, the host may already be programmed orotherwise informed of the capabilities during manufacture since they areused in a common device or housing. Second, due to assembly of the two,the client cannot easily be disconnected or separated from a connectionto the host, and the host may contain a hard-coded copy of the clientcapabilities, or at least know they do not change with a change inclient, as otherwise might occur.

The Number of Alt Displays field of the Client Capability Packet is usedto report that more than one display is attached and the AlternateDisplay Capability Packet reports the capability of each alternatedisplay. The video stream packet contains 4 bits in the Pixel DataAttributes field to address each alternate display in the client device.

The format of one embodiment of a Alternate Display Capability Packet isshown generally in FIG. 89. As seen in FIG. 86, an Alternate DisplayCapability Packet is structured to have Packet Length, Packet Type,cClient ID, Alt Display Number, Reserved 1, Bitmap Width, Bitmap Height,Display Window Width, Display Window Height, Color Map RGB Width, RGBCapability, Monochrome Capability, Reserved 2, Y Cb Cr Capability,Display Feature Capability, Reserved 3, and CRC fields. A Packet Typevalue of 145 identifies a packet as a Alternate Display CapabilityPacket. The cClient ID field is reserved for a Client ID for future useand generally set to zero.

The Alt Display Number field uses 1 byte to indicate the identity of thealternate display with an integer in the range of 0 to 15. The firstalternate display is typically designated as number 0 and the otheralternate displays are identified with unique Alt Display Number valueswith the largest value used being the total number of alternate displaysminus 1. Values larger than the total number of alternate displays minus1 are not used. Example: a mobile phone having a primary display and acaller-ID display connected to an MDDI client has one alternate display,so the Alt Display Number of the caller-ID display is zero and theNumber of Alt Displays field of the Client Capability Packet has a valueof 1.

The Reserved 1 field (1 byte) is reserved for future use. All bits inthis field are set to zero. One purpose of this field is to cause allsubsequent 2 byte fields to align to a 16-bit word address and cause4-byte fields to align to a 32-bit word address.

The Bitmap Width field uses 2 bytes that specify the width of the bitmapexpressed as a number of pixels. The Bitmap Height field uses 2 bytesthat specify the height of the bitmap expressed as a number of pixels.The Display Window Width field uses 2 bytes that specify the width ofthe display window expressed as a number of pixels. The Display WindowHeight field uses 2 bytes that specify the height of the display windowexpressed as a number of pixels.

The Color Map RGB Width field uses 2 bytes that specify the number ofbits of the red, green, and blue color components that can be displayedin the color map (palette) display mode. A maximum of 8 bits for eachcolor component (red, green, and blue) can be used. Even though 8 bitsof each color component are sent in the Color Map Packet, only thenumber of least significant bits of each color component defined in thisfield are used. If the display client cannot use the color map (palette)format then this value is zero. The color map RGB Width word is composedof three separate unsigned values:

Bits 3 through 0 define the maximum number of bits of blue in each pixelwith values of 0 to 8 being considered valid. Bits 7 through 4 definethe maximum number of bits of green in each pixel with values of 0 to 8being considered valid. Bits 11 through 8 define the maximum number ofbits of red in each pixel with values of 0 to 8 being considered valid.Bits 14 through 12 are reserved for future use and are generally set tozero. Bit 15 is used to indicate the ability of a client to accept ColorMap pixel data in packed or unpacked format. When Bit 15 is set to alogic-one level, this indicates that the client can accept Color Mappixel data in either packed or unpacked format. If bit 15 is set to alogic-zero, this indicates that the client can accept Color Map pixeldata only in unpacked format.

RGB Capability field uses 2 bytes to specify the number of bits ofresolution that can be displayed in RGB format. In one embodiment, ifthe client cannot use the RGB format then this value is set equal tozero. The RGB Capability word is composed of three separate unsignedvalues: Bits 3 through 0 define the maximum number of bits of blue (theblue intensity) in each pixel, Bits 7 through 4 define the maximumnumber of bits of green (the green intensity) in each pixel, and Bits 11through 8 define the maximum number of bits of red (the red intensity)in each pixel. Bits 14 through 12 are reserved for future use and areset to zero. Bit 15 is used to indicate the ability of a client toaccept RGB pixel data in packed or unpacked format. When Bit 15 is setto a logic-one level, this indicates that the client can accept RGBpixel data in either packed or unpacked format. If bit 15 is set to alogic-zero, this indicates that the client can accept RGB pixel dataonly in unpacked format.

The 1 byte Monochrome Capability field contains a value or informationto specify the number of bits of resolution that can be displayed inmonochrome format. If the client cannot use the monochrome format thenthis value is set equal to zero. Bits 6 through 4 are reserved forfuture use and are generally set to zero. Bits 3 through 0 define themaximum number of bits of grayscale that can exist in each pixel. Thesefour bits make it possible to specify that each pixel consists of 1 to15 bits. If the value is zero then the monochrome format is notsupported by the client. Bit 7 when set to one indicates that the clientcan accept monochrome pixel data in either packed or unpacked format. Ifbit 7 is set to zero this indicates that the client can acceptmonochrome pixel data only in unpacked format.

The Reserved 2 field is a 1 byte wide field reserved for future use andgenerally has all bits in this field set to logic-zero level. In oneembodiment, one purpose of this field is to cause all subsequent 2 bytefields to align to a 16-bit word address and cause 4-byte fields toalign to a 32-bit word address.

A 2-byte Y Cb Cr Capability field specifies the number of bits ofresolution that can be displayed in Y Cb Cr format. If the client cannotuse the Y Cb Cr format then this value is zero. The Y Cb Cr Capabilityword is composed of three separate unsigned values: Bits 3 through 0define the maximum number of bits that specify the Cb sample, Bits 7through 4 define the maximum number of bits that specify the Cr sample,Bits 11 through 8 define the maximum number of bits that specify the Ysample, and Bits 14 through 12 are reserved for future use and are setto zero. Bit 15 when set to one indicates that the client can accept YCb Cr pixel data in either packed or unpacked format. If bit 15 is setto zero this indicates that the client can accept Y Cb Cr pixel dataonly in unpacked format.

A 2 byte Bayer Capability field specifies the number of bits ofresolution, pixel group, and pixel order that can be transferred inBayer format. If the client cannot use the Bayer format then this valueis set at zero. The Bayer Capability field is composed of the followingvalues: Bits 3 through 0 define the maximum number of bits of intensitythat exist in each pixel, Bits 5 through 4 define the pixel grouppattern that may be required, Bits 8 through 6 define a pixel order thatis required, and Bits 14 through 9 are reserved for future use and areset to zero. Bit 15 when set to one indicates that the client can acceptBayer pixel data in either packed or unpacked format. If bit 15 is setto zero, this indicates that the client can accept Bayer pixel data onlyin unpacked format.

The 2-byte CRC field contains a 16-bit CRC of all bytes in the packetincluding the Packet Length.

42. Register Access Packet

The Register Access Packet provides either a host or a client with ameans, mechanism, or method to access configuration and status registersin the opposite end of the MDDI link. The registers are likely to beunique for each display or device controller. These registers alreadyexist in many displays that require setting configurations, modes ofoperation, and have other useful and necessary settings. The RegisterAccess Packet allows the MDDI host or client to both write to a registerand request to read a register using the MDDI link. When the host orclient requests to read a register the opposite end should respond bysending the register data in the same packet type, but also byindicating that this is the data read from a particular register withthe use of the Read/Write Info field. The Register Access Packet may beused to read or write multiple registers by specifying a register countgreater than 1. A client indicates an ability to support the RegisterAccess Packet using bit 22 of Client Feature Capability field of theClient Capability Packet. The client will use the encapsulation packetto send the Register Access Packet, therefore presenting what appears asa packet within a packet configuration or structure.

The format of one embodiment of a Register Access Packet is showngenerally in FIG. 87. As seen in FIG. 87, a Register Access Packet isstructured to have Packet Length, Packet Type, bClient ID, Read/WriteFlags, Register Address, Parameter CRC, Register Data List and RegisterData CRC fields. A Packet Type value of 146 identifies a packet asRegister Access Packet. The bClient ID field is reserved for future useand is generally set to zero for now.

The 2-byte Read/Write Flags field specifies the specific packet aseither a write, or a read, or a response to a read, and provides a countof the data values.

Bits 15 through 14 act as Read/Write Flags. If Bits[15:14] are ‘00’ thenthis packet contains data to be written to a register addressed by theRegister Address field. The data to be written to the specifiedregisters is contained in the Register Data List field. If Bits[15:14]are ‘10’ then this is a request for data from one or more registersaddressed by the Register Address field. If Bits[15:14] are ‘11’ thenthat packet contains data that was requested in response to a RegisterAccess Packet having bits 15:14 of the Read/Write Flags set to ‘10’. TheRegister Address field contains the address of the registercorresponding to the first Register Data List item, and the RegisterData List field contains data that was read from the address oraddresses. If Bits[15:14] are ‘01’ this is treated as an invalid value,this value is reserved for future use and is not used at this time, butthose skilled in the art will understand how to employ it for futureapplications.

Bits 13:0 use a 14-bit unsigned integer to specify the number of 32-bitRegister Data items to be transferred in the Register Data List field.If bits 15:14 equal ‘00’ then bits 13:0 specify the number of 32-bitregister data items that are contained in the Register Data List fieldto be written to registers starting at the register specified by theRegister Address field. If bits 15:14 equal ‘10’ then bits 13:0 specifythe number of 32-bit register data items that the receiving device sendsto a device requesting that the registers be read. The Register DataList field in this packet contains no items and is of zero length. Ifbits 15:14 equal ‘11’ then bits 13:0 specify the number of 32-bitregister data items that have been read from registers that arecontained in the Register Data List field. Bits 15:14 are not currentlyset equal to ‘01’, which is considered an invalid value, and otherwisereserved for future designations or use.

The Register Address field uses 4 bytes to indicate the register addressthat is to be written to or read from. For addressing registers whoseaddressing is less than 32 bits, the upper bits are set to zero.

The 2-byte Parameter CRC field contains a CRC of all bytes form thePacket Length to the Register Address. If this CRC fails to check thenthe entire packet is discarded.

The Register Data List field contains a list of 4-byte register datavalues to be written to client registers or values that were read fromclient device registers.

The 2-byte Register Data CRC field contains a CRC of only the RegisterData List. If this CRC fails to check then the Register Data may stillbe used, but the CRC error count is incremented.

D. Packet CRC

The CRC fields appear at the end of the packets and sometimes aftercertain more critical parameters in packets that may have asignificantly large data field, and thus, an increased likelihood oferrors during transfer. In packets that have two CRC fields, the CRCgenerator, when only one is used, is re-initialized after the first CRCso that the CRC computations following a long data field are notaffected by the parameters at the beginning of the packet.

There is a remote possibility for packets containing multiple bit errorsto produce a good CRC. The probability of detecting a good CRC on apacket with errors approaches 7.6×10⁻⁶ on very long packets containingmany errors. By design, the MDDI link will have a very low or zero errorrate. The CRC is intended to be used to monitor the health of the link,and is not intended to detect errors on specific packets to determinewhether packets should be retransmitted.

In an exemplary embodiment, the polynomial used for the CRC calculationis known as the CRC-16, or X16+X15+X2+X0. A sample implementation of aCRC generator and checker 3600 useful for implementing the invention isshown in FIG. 36. In FIG. 36, a CRC register 3602 is initialized to avalue of 0x000 just prior to transfer of the first bit of a packet whichis input on the Tx_MDDI_Data_Before_CRC line, then the bytes of thepacket are shifted into the register starting with the LSB first. Notethat the register bit numbers in this figure correspond to the order ofthe polynomial being used, and not the bit positions used by the MDDI.It is more efficient to shift the CRC register in a single direction,and this results in having CRC bit 15 appear in bit position 0 of theMDDI CRC field, and CRC register bit 14 in MDDI CRC field bit position1, and so forth until MDDI bit position 14 is reached.

As an example, if the packet contents for the Client Request and StatusPackets are: 0x000c, 0x0046, 0x000, 0x0400, 0x00, 0x00, 0x0000 (orrepresented as a sequence of bytes as: 0x0c, 0x00, 0x46, 0x00, 0x00,0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00), and are submitted using theinputs of the multiplexors 3604 and 3606, and AND gate 3608, theresulting CRC output on the Tx_MDDI_Data_With_CRC line is 0xd9aa (orrepresented as a sequence as 0xaa, 0xd9).

When CRC generator and checker 3600 is configured as a CRC checker, theCRC that is received on the Rx_MDDI_Data line is input to multiplexor3604 and exclusive-OR (XOR) gate 3612, and is compared bit by bit withthe value found in the CRC register using NOR gate 3610, AND gate 3608,and AND gate 3614. If there are any errors, as output by AND gate 3614,the CRC is incremented once for every packet that contains a CRC errorby connecting the output of gate 3614 to the input of register 3602.Note that the example circuit shown in the diagram of FIG. 36 can outputmore than one CRC error signal within a given CHECK_CRC_NOW window (seeFIG. 37B). Therefore, the CRC error counter generally only counts thefirst CRC error instance within each interval where CHECK_CRC_NOW isactive. If configured as a CRC generator the CRC is clocked out of theCRC register at the time coinciding with the end of the packet.

The timing for the input and output signals, and the enabling signals,is illustrated graphically in FIGS. 37A and 37B. The generation of a CRCand transmission of a packet of data are shown in FIG. 37A with thestate (0 or 1) of the Gen_Reset, Check_CRC_Now, Generate_CRC_Now, andSending_MDDI_Data signals, along with the Tx_MDDI_Data_Before_CRC andTx_MDDI_Data_With_CRC signals. The reception of a packet of data andchecking of the CRC value are shown in FIG. 37B, with the state of theGen_Reset, Check_CRC_Now, Generate_CRC_Now, and Sending_MDDI_Datasignals, along with the Rx_MDDI_Data and CRC error signals.

E. Error Code Overload for Packet CRC

Whenever only data packets and CRC are being transferred between thehost and client, there are no error codes being accommodated. The onlyerror is a loss of synchronization. Otherwise, one has to wait for thelink to timeout from a lack of a good data transfer path or pipeline andthen reset the link and proceed. Unfortunately, this is time consumingand somewhat inefficient.

For use in one embodiment, a new technique has been developed in whichthe CRC portion of packets is used to transfer error code information.This is generally shown in FIG. 65. That is, one or more error codes aregenerated by the processors or devices handling the data transfer whichindicate specific predefined errors or flaws that might occur within thecommunication processing or link. When an error is encountered, that theappropriate error code is generated and transferred using the bits forthe CRC of a packet. That is, the CRC value is overloaded, oroverwritten, with the desired error code, which can be detected on thereceiving end by an error monitor or checker that monitors the values ofthe CRC field. For those cases in which the error code matches the CRCvalue for some reason, the compliment of the error is transferred toprevent confusion.

In one embodiment, to provide a robust error warning and detectionsystem, the error code may be transferred several times, using a seriesof packets, generally all, that are transferred or sent after the errorhas been detected. This occurs until the point at which the conditioncreating the error is cleared from the system, at which point theregular CRC bits are transferred without overloading by another value.

This technique of overloading the CRC value provides a much quickerresponse to system errors while using a minimal amount of extra bits orfields.

As shown in FIG. 66, a CRC overwriting mechanism or apparatus 6600 isshown using an error detector or detections means 6602, which can formpart of other circuitry previously described or known, detects thepresence or existence of errors within the communication link orprocess. An error code generator or means 6604, which can be formed aspart of other circuitry or use techniques such as look up tables tostore pre-selected error messages, generates one or more error codes toindicate specific predefined errors or flaws that have been detected asoccurring. It is readily understood that devices 6602 and 6604 can beformed as a single circuit or device as desired, or as part of aprogrammed sequence of steps for other known processors and elements.

A CRC value comparator or comparison means 6606 is shown for checking tosee if the selected error code or codes are the same as the CRC valuebeing transferred. If that is the case then a code compliment generatoror generation means or device is used to provide the compliment of theerror codes as to not be mistaken as the original CRC pattern or valueand confuse or complicate the detection scheme. An error code selectoror selection means element or device 6610 then selects the error code orvalue it is desired to insert or overwrite, or their respectivecompliments as appropriate. An error code CRC over-writer or overwriting mechanism or means 6612 is a device that receives the datastream, packets, and the desired codes to be inserted and overwrites thecorresponding or appropriate CRC values, in order to transfer thedesired error codes to a receiving device.

As mentioned, the error code may be transferred several times, using aseries of packets, so the over-writer 6612 may utilize memory storageelements in order to maintain copies of the codes during processing orrecall these codes from previous elements or other known storagelocations which can be used to store or hold their values as needed, oras desired.

The general processing the overwriting mechanism of FIG. 66 isimplementing is shown in additional detail in FIGS. 67A and 67B. In 67Aan error, one or more, is detected in step 6702 in the communicationdata or process and an error code is selected in step 6704 to indicatethis condition. At the same time, or at an appropriate point, the CRCvalue to be replaced is checked in a step 6706, and compared to thedesired error code in step 6708. The result of this comparison, asdiscussed earlier, is a determination as to whether or not the desiredcode, or other representative values, will be the same as the CRC valuepresent. If this is the case, then processing proceeds to a step 6712where the compliment, or in some cases another representative value, asdesired, is selected as the code to insert. One it has been determinedwhat error codes or values are to be inserted in steps 6710 and 6714,that appropriate code is selected for insertion. These steps areillustrated as separate for purposes of clarity but generally representa single choice based on the output of the step 6708 decision. Finally,in step 6716 the appropriate values are overwritten in the CRC locationfor transfer with the packets being targeted by the process.

On the packet reception side, as shown in FIG. 67B, the packet CRCvalues are being monitored in a step 6722. Generally, the CRC values arebeing monitored by one or more processes within the system to determineif an error in data transfer has occurred and whether or not to requesta retransmission of the packet or packets, or to inhibit furtheroperations and so forth, some of which is discussed above. As part ofsuch monitoring the information can also be used to compare values toknown or pre-selected error codes, or representative values and detectthe presence of errors. Alternatively, a separate error detectionprocess and monitor can be implemented. If a code appears to be presentit is extracted or otherwise noted in step 6724 for further processing.A determination can be made in step 6726 as to whether or not this isthe actual code or a compliment, in which case an additional step 6728is used to translate the value to the desired code value. In either casethe resulting extracted code, compliment, or other recovered values arethen used to detect what error has occurred form the transmitted code instep 6730.

V. Link Hibernation

The MDDI link can enter the hibernation state quickly and wake up fromhibernation quickly. This responsiveness allows a communicating systemor device to force the MDDI link into hibernation frequently to reducepower consumption, since it can wake up again for use very quickly. Inone embodiment, as an external mode client wakes up from hibernation forthe first time it does so at a data rate and with strobe pulse timingthat is consistent with a 1 Mbps rate, that is, the MDDI_Stb pair shouldtoggle at a 500 kHz rate. Once characteristics of the client have beendiscovered by or communicated to the host, then the host may wake up thelink at generally any rate from 1 Mbps to the maximum rate at which theclient can operate. Internal mode clients may wake up at any rate atwhich both the host and client can operate. This is also generallyapplicable to the first time an internal mode client wakes up.

In one embodiment, when the link wakes up from hibernation the host andclient exchange a sequence of pulses. These pulses can be detected usinglow-speed line receivers that consume only a fraction of the current asthe differential receivers required to receive the signals at themaximum link operating speed. Either the host or client can wake up thelink, so the wake-up protocol is designed to handle possible contentionthat can occur if both host and client attempt to wake upsimultaneously.

During the hibernation state the MDDI_Data and MDDI_Stb differentialdrivers are disabled in the high-impedance state and the differentialvoltage across all differential pairs is zero volts. The differentialline receivers used to detect the sequence of pulses during the wake-upfrom hibernation have an intentional voltage offset. In one embodiment,the threshold between a logic-one and logic-zero level in thesereceivers is approximately 125 mV. This causes an un-driven differentialpair to be seen as a logic-zero level during the link wake-up sequence.

In order to enter a Hibernation State, the host sends 64 MDDI_Stb cyclesafter the CRC of the Link Shutdown Packet. The host disables theMDDI_Data0 output of the host in the range of 16 to 56 MDDI_Stb cycles(including output disable propagation delays) after the CRC. The hostfinishes sending the 64 MDDI_Stb cycles after the CRC of the LinkShutdown packet before it initiates the wake-up sequence. In oneembodiment, the host-initiated wake-up is defined as the host having towait at least 100 nsec after MDDI_Data0 reaches a valid logic-one levelbefore driving pulses on MDDI_Stb. In one embodiment, the client waitsat least 60 MDDI_Stb cycles after the CRC of the Link Shutdown Packetbefore it drives MDDI_Data0 to a logic-one level to attempt to wake-upthe host.

In order to “wake-up” from a Hibernation State, several actions orprocesses are undertaken. When the client, here a display, needs data orcommunication, service, from the host it generates a request pulse bydriving the MDDI_Data0 line to a logic-one state for around 70 to 1000μsec, while MDDI_Stb is inactive and keeps MDDI_Data0 driven to alogic-one level for about 70 MDDI_Stb cycles (over a range of 60 to 80)after MDDI_Stb becomes active, although other periods can be used asdesired. The client then disables the MDDI_Data0 driver by placing itinto a high-impedance state.

If MDDI_Stb is active during hibernation, although unlikely, then theclient might only drive MDDI_Data0 to a logic-one state for about 70MDDI_Stb cycles (over a range of 60 to 80). This action causes the hostto start or restart data traffic on the forward link (208) and to pollthe client for its status.

The host must detect the presence of the request pulse and begins thestartup sequence of first driving the MDDI_Stb to logic-zero level andMDDI_Data0 to a logic-high level for at least around 200 nsec. And thenwhile toggling MDDI_Stb continue to drive MDDI_Data0 to a logic-onelevel for about 150 MDDI_Stb cycles (a range of 140 to 160) and tologic-zero for about 50 MDDI_Stb cycles. The client should not send aservice request pulse if it detects MDDI_Data0 in the logic-one statefor more than 80 MDDI_Stb cycles. When the client has detectedMDDI_Data0 at a logic-one level for 60 to 80 MDDI_Stb cycles it beginsto search for the interval where the host drives MDDI_Data0 to alogic-zero level for 50 MDDI_Stb cycles. After the host drivesMDDI_Data0 to a logic-zero level for a duration of 50 MDDI_Stb cycles,then the host starts sending packets on the link. The first packet sentis a Sub-frame Header Packet. The client begins to look for theSub-frame Header Packet after MDDI_Data0 is at a logic-zero level for 40MDDI_Stb cycles of the 50 cycle interval. The nature of selection of thetimes and tolerances of time intervals related to the hibernationprocessing and start up sequence are discussed further below. (See FIGS.68A-C below.)

The host may initiate the wake-up by first enabling MDDI_Stb andsimultaneously drive it to a logic-zero level. MDDI_Stb should not bedriven to a logic-one level until pulses are output as described below.After MDDI_Stb reaches a logic-zero level the host enables MDDI_Data0and simultaneously drives it to a logic-one level. MDDI_Data0 should notbe driven to a logic-zero level during the wake-up process_until theinterval where it is driven to a logic-zero level for an interval of 50MDDI_Stb pulses as described below. The host should wait at least 200nsec after MDDI_Data0 reaches a valid logic-one level before drivingpulses on MDDI_Stb. This timing relationship occurs while consideringthe worst-case output enable delays. This substantially guarantees thata client has sufficient time to fully enable its MDDI_Stb receiver afterbeing awakened by a logic-one level on MDDI_Data0 that was driven by thehost.

An example of the processing steps for a typical client service requestevent 3800 with no contention is illustrated in FIG. 38, where theevents are labeled for convenience in illustration using the letters A,B, C, D, E, F, and G. The process commences at point A when the hostsends a Link Shutdown Packet to the client device to inform it that thelink will transition to a low-power hibernation state. In a next step,the host enters the low-power hibernation state by disabling theMDDI_Data0 driver and setting the MDDI_Stb driver to a logic zero, asshown at point B. MDDI_Data0 is driven to a logic-zero level by ahigh-impedance bias network. After some period of time, the client sendsa service request pulse to the host by driving MDDI_Data0 to a logic onelevel as seen at point C. The host still asserts the logic-zero levelusing the high-impedance bias network, but the driver in the clientforces the line to a logic one level. Within 50 μsec, the hostrecognizes the service request pulse, and asserts a logic one level onMDDI_Data0 by enabling its driver, as seen at point D. The client thenceases from attempting to assert the service request pulse, and theclient places its driver into a high-impedance state, as seen at pointE. The host drives MDDI_Data0 to a logic-zero level for 50 μsec, asshown at point F, and also begins to generate MDDI_Stb in a mannerconsistent with the logic-zero level on MDDI_Data0. The client begins tolook for the Sub-frame Header Packet after MDDI_Data0 is at a logic-zerolevel for 40 MDDI_Stb cycles. After asserting MDDI_Data0 to a logic-zerolevel and driving MDDI_Stb for 50 μsec, the host begins to transmit dataon the forward link by sending a Sub-frame Header Packet, as shown atpoint G.

A similar example is illustrated in FIG. 39 where a service request isasserted after the link restart sequence has begun, and the events areagain labeled using the letters A, B, C, D, E, F, and G. This representsa worst case scenario where a request pulse or signal from the clientcomes closest to corrupting the Sub-frame Header Packet. The processcommences at point A when the host again sends a Link Shutdown Packet tothe client device to inform it that the link will transition to alow-power hibernation state. In a next step, the host enters thelow-power hibernation state by disabling the MDDI_Data0 driver andsetting the MDDI_Stb driver to a logic-zero level, as shown at point B.As before, MDDI_Data0 is driven to a logic-zero level by ahigh-impedance bias network. After a period of time, the host begins thelink restart sequence by driving MDDI_Data0 to a logic-one level for 150μsec as seen at point C. Prior to 50 μsec passing after the link restartsequence begins the display also asserts MDDI_Data0 for a duration of 70μsec, as seen at point D. This happens because the display has a need torequest service from the host and does not recognize that the host hasalready begun the link restart sequence. The client then ceasesattempting to assert the service request pulse, and the client placesits driver into a high-impedance state, as seen at point E. The hostcontinues to drive MDDI_Data0 to a logic-one level. The host drivesMDDI_Data0 to a logic-zero level for 50 μsec, as shown at point F, andalso begins to generate MDDI_Stb in a manner consistent with the logiczero level on MDDI_Data0. After asserting MDDI_Data0 to a logic-zerolevel, and driving MDDI_Stb for 50 μsec, the host begins to transmitdata on the forward link by sending a Sub-frame Header Packet, as shownat point G.

From the above discussion, one sees that the prior solution involvedhaving the host go through two states as part of a wakeup sequence. Forthe first state, the host drives the MDDI_Data0 signal high for 150 μs,and then drives the MDDI_Data0 signal low for 50 us while activating theMDDI_Stb line, and then begins to transmit MDDI packets. This processworks well to advance the state of the art in terms of data ratesachievable using the MDDI apparatus and methods. However, as statedearlier, more speed in terms of reduced response time to conditions orbeing able to more quickly select the next step or process, are theability to simplify processing or elements, are always in demand.

Applicants have discovered a new inventive approach to wake-upprocessing and timing in which the host uses a clock cycle based timingfor the signal toggling. In this configuration, the host starts togglingMDDI_Stb from 0 to 10 μsec after the host drives the MDDI_Data0 signalhigh at the beginning of the wake-up sequence, and does not wait untilthe signal is driven low. During a wake-up sequence, the host togglesMDDI_Stb as though the MDDI_Data0 signal were always at a logic-zerolevel. This effectively removes the concept of time from the clientside, and the host changes from the prior 150 μs and 50 μs periods forthe first two states, to 150 clock cycles and 50 clock cycles, for theseperiods.

The host now becomes responsible for driving that data line high, andwithin 10 clock cycles starting to transmit a strobe signal as if thedata line was zero. After the host has driven the data line high for 150clock cycles, the host drives the data line low for 50 clock cycleswhile continuing to transmit the strobe signal. After it has completedboth of these processes, the host can begin to transmit the firstsub-frame header packet.

On the client side, the client implementation can now use the generatedclock to calculate the number of clock cycles that the data line isfirst high, and then low. The number of clock cycles that need to occurin both the data line driven high state is 150 and data line driven lowstate is 50. This means that for a proper wakeup sequence, the clientshould be able to count at least 150 continuous clock cycles of the dataline being high, followed by at least 50 continuous clock cycles of thedata line being low. Once these two conditions are met, the client canbegin to search for the unique word of the first sub-frame. A break inthis pattern is used as a basis to return the counters to an initialstate in which the client again looks for the first 150 continuous clockcycles of the data line being high.

A client implementation of the invention for host based wakeup fromhibernation is very similar to the initial start-up case except that theclock rate is not forced to start at 1 Mbps, as discussed earlier.Instead the clock rate can be set to resume at whatever previous ratewas active when the communication link went into hibernation. If thehost begins transmission of a strobe signal as described above, theclient should be able to again count at least 150 continuous clockcycles of the data line being high, followed by at least 50 continuousclock cycles of the data line being low. Once these two conditions havebeen met, the client can begin the search for the unique word.

A client implementation of the invention for client based wakeup fromhibernation is similar to the host based wakeup except that it starts byhaving the client driving the data line. The client can asynchronouslydrive the data line without a clock to wake up the host device. Once thehost recognizes that the data line is being driven high by the client,it can begin its wakeup sequence. The client can count the number ofclock cycles generated by the host starting or during its wakeupprocess. Once the client counts 70 continuous clock cycles of the databeing high, it can stop driving the data line high. At this point, thehost should already be driving the data line high as well. The clientcan then count another 80 continuous clock cycles of the data line beinghigh to reach the 150 clock cycles of the data line being high, and canthen look for 50 clock cycles of the data line being low. Once thesethree conditions have been met the client can begin to look for theunique word.

An advantage of this new implementation of wake-up processing is that itremoves the need for a time measuring device. Whether this is anoscillator, or capacitor discharge circuit, or other such known devices,the client no longer needs such external devices to determine the startup conditions. This saves money and circuit area when implementingcontrollers, counters, and so forth on a client device board. While thismay not be as advantageous to the client, for the host, this techniqueshould also potentially simplify the host in terms of very high densitylogic (VHDL) being used for core circuitry. The power consumption ofusing the data and strobe lines as the wakeup notification andmeasurement source will also be lower since no external circuitry willneed to be running for the core elements to be waiting for a host basedwakeup. The number of cycles or clock periods used are exemplary andother periods can be used as will be apparent to one skilled in the art.

An advantage of this new implementation of wake-up processing is that itremoves the need for a time measuring device. Whether this is anoscillator, or capacitor discharge circuit, or other such known devices,the client no longer needs such external devices to determine the startup conditions. This saves money and circuit area when implementingcontrollers, counters, and so forth on a client device board. While thismay not be as advantageous to the client, for the host, this techniqueshould also potentially simplify the host in terms of very high densitylogic (VHDL) being used for core circuitry. The power consumption ofusing the data and strobe lines as the wakeup notification andmeasurement source will also be lower since no external circuitry willneed to be running for the core elements to be waiting for a host basedwakeup.

To clarify and illustrate the operation of this new technique, thetiming of MDDI_Data0, MDDI_Stb, and various operations relative to theclock cycles are shown in FIGS. 68A, 68B, and 68C.

An example of the processing steps for a typical Host-initiated Wake-upwith no contention is illustrated in FIG. 68A, where the events areagain labeled for convenience in illustration using the letters A, B, C,D, E, F, and G. The process commences at point A when the host sends aLink Shutdown Packet to the client device to inform it that the linkwill transition to a low-power hibernation state. In a next step, pointB, the host toggles MDDI_Stb for about 64 cycles (or as desired forsystem design) to allow processing by the client to be completed priorto stopping MDDI_Stb from toggling, which stops the recovered clock inthe client device. The host also initially sets MDDI_Data0 to logic-zerolevel and then disables the MDDI_Data0 output in the range of 16 to 48cycles (generally including output disable propagation delays) after theCRC. It may be desirable to place high-speed receivers for MDDI_Data0and MDDI_Stb in the client in a low power state some time after the 48cycles after the CRC and prior to the next stage (C). The client placesits high-speed receivers for MDDI_Data0 and MDDI_Stb into hibernationany time after the rising edge of the 48^(th) MDDI_Stb cycle after theCRC of the Link Shutdown Packet. It is recommended that the client placeits high-speed receivers for MDDI_Data0 and MDDI_Stb into hibernationbefore the rising edge of the 64^(th) MDDI_Stb cycle after the CRC ofthe Link Shutdown Packet.

The host enters the low-power hibernation state at point or step C, bydisabling the MDDI_Data0 and MDDI_Stb drivers and placing a hostcontroller in a low power hibernation state. One can also set theMDDI_Stb driver to a logic-zero level (using a high-impedance biasnetwork) or to continue toggling during hibernation, as desired. Theclient is also in a low power level hibernation state.

After some period of time, the host commences the link restart sequenceat point D, by enabling the MDDI_Data0 and MDDI_Stb driver output. Thehost drives MDDI_Data0 to a logic-one level and MDDI_Stb to a logic-zerolevel for as long as it should take for the drivers to fully enabletheir respective outputs. The host typically waits around 200nanoseconds after these outputs reach desired logic levels beforedriving pulses on MDDI_Stb. This allows the client time to prepare toreceive.

With the host drivers enabled and MDDI_Data0 being driven to a logic-onelevel, the host begins to toggle MDDI_Stb for a duration of 150 MDDI_Stbcycles, as seen at point E. The host drives MDDI_Data0 to a logic zerolevel for 50 cycles, as shown at point F, and the client begins to lookfor the Sub-frame Header Packet after MDDI_Data0 is at a logic-zerolevel for 40 MDDI_Stb cycles. The host begins to transmit data on theforward link by sending a Sub-frame Header Packet, as shown at point G.

An example of the processing steps for a typical Client-initiatedWake-up with no contention is illustrated in FIG. 68B, where the eventsare again labeled for convenience in illustration using the letters A,B, C, D, E, F, G, H, and I. As before, the process commences at point Awhen the host sends a Link Shutdown Packet to inform the client that thelink will transition to the low power state.

At point B, the host toggles MDDI_Stb for about 64 cycles (or as desiredfor system design) to allow processing by the client to be completedprior to stopping MDDI_Stb from toggling, which stops the recoveredclock in the client device. The host also initially sets MDDI_Data0 to alogic-zero level and then disables the MDDI_Data0 output in the range of16 to 48 cycles (generally including output disable propagation delays)after the CRC. It may be desirable to place high-speed receivers forMDDI_Data0 and MDDI_Stb in the client in a low power state some timeafter the 48 cycles after the CRC and prior to the next stage (C).

The host enters the low-power hibernation state at point or step C, bydisabling the MDDI_Data0 and MDDI_Stb drivers and placing a hostcontroller in a low power hibernation state. One can also set theMDDI_Stb driver to a logic-zero level (using a high-impedance biasnetwork) or to continue toggling during hibernation, as desired. Theclient is also in a low power level hibernation state.

After some period of time, the client commences the link restartsequence at point D, by enabling the MDDI_Stb receiver, and alsoenabling an offset in the MDDI_Stb receiver to guarantee the state ofthe received version of MDDI_Stb is a logic-zero level in the clientbefore the host enables its MDDI_Stb driver. It may be desirable for theclient to enable the offset slightly ahead of enabling the receiver toensure the reception of a valid differential signal and inhibiterroneous signals, as desired. The Client enables the MDDI_Data0 driverwhile driving the MDDI_Data0 line to a logic one level. It is allowedfor MDDI_Data0 and MDDI_Stb to be enabled simultaneously if the time toenable the offset and enable the standard MDDI_Stb differential receiveris less than 200 nsec.

Within about 1 msec., point E, the host recognizes the service requestpulse from the client, and the host begins the link restart sequence byenabling the MDDI_Data0 and MDDI_Stb driver outputs. The host drivesMDDI_Data0 to a logic-one level and MDDI_Stb to a logic-zero level foras long as it should take for the drivers to enable their respectiveoutputs. The host typically waits around 200 nanoseconds after theseoutputs reach desired logic levels before driving pulses on MDDI_Stb.This allows the client time to prepare to receive.

With the host drivers enabled and MDDI_Data0 being driven to a logic-onelevel, the host begins outputting pulses on MDDI_Stb for a duration of150 MDDI_Stb cycles, as seen at point F. When the client recognizes thefirst pulse on MDDI_Stb it disables the offset in its MDDI_Stb receiver.The client continues to drive MDDI_Data0 to a logic-one level for 70MDDI_Stb cycles, and disables its MDDI_Data0 driver at point G. The hostcontinues to drive MDDI_Data0 to a logic-one level for a duration of 80additional MDDI_Stb pulses, and at point H drives MDDI_Data0 to alogic-zero level.

As seen at points G and H, the host drives MDDI_Data0 to a logic-zerolevel for 50 cycles, and the client begins to look for the Sub-frameHeader Packet after MDDI_Data0 is at a logic-zero level for 40 MDDI_Stbcycles. After driving MDDI_Stb for a duration of 50 cycles, the hostbegins to transmit data on the forward link by sending a Sub-frameHeader Packet, as shown at point I.

An example of the processing steps for a typical Host-initiated Wake-upwith contention from the client, that is the client also wants to wakeup the link, is illustrated in FIG. 68C. The events are again labeledfor convenience in illustration using the letters A, B, C, D, E, F, G,H, and I. As before, the process commences at point A when the hostsends a Link Shutdown Packet to inform the client that the link willtransition to the low power state, proceeds to point B where MDDI_Stb istoggled for about 64 cycles (or as desired for system design) to allowprocessing by the client to be completed, and then to point C, where thehost enters the low-power hibernation state, by disabling the MDDI_Data0and MDDI_Stb drivers and placing a host controller in a low powerhibernation state. After some period of time, the host commences thelink restart sequence at point D, by enabling the MDDI_Data0 andMDDI_Stb driver output, and begins to toggle MDDI_Stb for a duration of150 MDDI_Stb cycles, as seen at point E.

At up to 70 MDDI_Stb cycles after point E, here point F, the client hasnot yet recognized that the host is driving MDDI_Data0 to a logic-onelevel so the client also drives MDDI_Data0 to a logic-one level. Thisoccurs here because the client has a desire to request service but doesnot recognize that the host it is trying to communicate with has alreadybegun the link restart sequence. At point G, the client ceases to driveMDDI_Data0, and places its driver into a high impedance state bydisabling its output. The host continues to drive MDDI_Data0 to alogic-one level for 80 additional cycles.

The host drives MDDI_Data0 to a logic zero level for 50 cycles, as shownat point H, and the client begins to look for the Sub-frame HeaderPacket after MDDI_Data0 is at a logic-zero level for 40 MDDI_Stb cycles.The host begins to transmit data on the forward link by sending aSub-frame Header Packet, as shown at point I.

VI. Interface Electrical Specifications

In the example embodiments, Data in a Non-Return-to-Zero (NRZ) format isencoded using a data-strobe signal or DATA-STB format, which allowsclock information to be embedded in the data and strobe signals. Theclock can be recovered without complex phase lock loop circuitry. Datais carried over a bi-directional differential link, generallyimplemented using a wire-line cable, although other conductors, printedwires, or transfer elements can be used, as stated earlier. The strobesignal (STB) is carried over a uni-directional link which is driven onlyby the host. The strobe signal toggles value (0 or 1) whenever there isa back-to-back state, 0 or 1, that remains the same on the Data line orsignal.

An example of how a data sequence such as bits “1110001011” can betransmitted using DATA-STB encoding is shown in graphical form in FIG.40. In FIG. 40, a DATA signal 4002 is shown on the top line of a signaltiming chart and a STB signal 4004 is shown on a second line, each timealigned as appropriate (common starting point). As time passes, whenthere is a change of state occurring on the DATA line 4002 (signal),then the STB line 4004 (signal) maintains a previous state, thus, thefirst ‘1’ state of the DATA signal correlates with the first ‘0’ statefor the STB signal, its starting value. However, if or when the state,level, of the DATA signal does not change then the STB signal toggles tothe opposite state or ‘1’ in the present example, as is the case in FIG.40 where the DATA is providing another ‘1’ value. That is, there is oneand only one transition per bit cycle between DATA and STB. Therefore,the STB signal transitions again, this time to ‘0’ as the DATA signalstays at ‘1’ and holds this level or value as the DATA signal changeslevel to ‘0’. When the DATA signal stays at ‘1’, the STB signal togglesto the opposite state or ‘1’ in the present example, and so forth, asthe DATA signal changes or holds levels or values.

Upon receiving these signals, an exclusive-OR (XOR) operation isperformed on the DATA and STB signals to produce a clock signal 4006,which is shown on the bottom of the timing chart for relative comparisonwith the desired data and strobe signals. An example of circuitry usefulfor generating the DATA and STB outputs or signals from input data atthe host, and then recovering or recapturing the data from the DATA andSTB signals at the client, is shown in FIG. 41.

In FIG. 41, a transmission portion 4100 is used to generate and transmitthe original DATA and STB signals over an intermediary signal path 4102,while a reception portion 4120 is used to receive the signals andrecover the data. As shown in FIG. 41, in order to transfer data from ahost to a client, the DATA signal is input to two D-type flip-flopcircuit elements 4104 and 4106 along with a clock signal for triggeringthe circuits. The two flip-flop circuit outputs (Q) are then split intoa differential pair of signals MDDI_Data0+, MDDI_Data0− and MDDI_Stb+,MDDI_Stb−, respectively, using two differential line drivers 4108 and4110 (voltage mode). A three-input exclusive-NOR (XNOR) gate, circuit,or logic element 4112 is connected to receive the DATA and outputs ofboth flip-flops, and generates an output that provides the data inputfor the second flip-flop, which in turn generates the MDDI_Stb+,MDDI_Stb− signals. For convenience, the XNOR gate has the inversionbubble placed to indicate that it is effectively inverting the Q outputof the flip-flop that generates the Strobe.

In reception portion 4120 of FIG. 41, the MDDI_Data0+, MDDI_Data0− andMDDI_Stb+, MDDI_Stb− signals are received by each of two differentialline receivers 4122 and 4124, which generate single outputs from thedifferential signals. The outputs of the amplifiers are then input toeach of the inputs of a two-input exclusive-OR (XOR) gate, circuit, orlogic element 4126 which produces the clock signal. The clock signal isused to trigger each of two D-type flip-flop circuits 4128 and 4130which receive a delayed version of the DATA signal, through delayelement 4132, one of which (4128) generates data ‘0’ values and theother (4130) data ‘1’ values. The clock has an independent output fromthe XOR logic as well. Since the clock information is distributedbetween the DATA and STB lines, neither signal transitions betweenstates faster than half of the clock rate. Since the clock is reproducedusing the exclusive-OR processing of the DATA and STB signals, thesystem effectively tolerates twice the amount of skew between the inputdata and clock compared to the situation when a clock signal is sentdirectly over a single dedicated data line.

The MDDI Data pairs, MDDI_Stb+, and MDDI_Stb− signals are operated in adifferential mode to maximize immunity from the negative affects ofnoise. Each differential pair is parallel-terminated with thecharacteristic impedance of the cable or conductor being used totransfer signals. Generally, all parallel-terminations reside in theclient device. This is near the differential receiver for forwardtraffic (data sent from the host to the client), but it is at thedriving end of the cable or other conductors or transfer elements forreverse traffic (data sent from the client to the host). For reversetraffic, the signal is driven by the client, reflected by the highimpedance receiver at the host, and is terminated at the client. Asdescribed elsewhere, reverse data or data over the reverse link can betransferred or sent at data rates greater than the reciprocal of theround-trip delay in the cable. The MDDI_Stb+ and MDDI_Stb− conductors orsignals are only driven by the host.

An exemplary configuration of elements useful for achieving the drivers,receivers, and terminations for transferring signals as part of theinventive MDDI are shown in FIG. 42. This exemplary interface uses lowvoltage sensing, here 200 mV, with less than 1 volt power swings and lowpower drain. The driver of each signal pair has a differential currentoutput. While receiving MDDI packets, the MDDI_Data and MDDI_Stb pairsuse a conventional differential receiver with a differential voltagethreshold of zero volts. In the hibernation state the driver outputs aredisabled and the parallel-termination resistors pull the differentialvoltage on each signal pair to zero volts. During hibernation, a specialreceiver on the MDDI_Data0 pair has an offset input differential voltagethreshold of positive 125 mV, which causes the hibernation line receiverto interpret the un-driven signal pair as a logic-zero level.

The differential voltage of a differential pair is defined as thedifference of the voltage on the positive (+) signal minus the voltageon the negative (−) signal. The names of differential pair signals endwith either “+” or “−”, which indicates the positive or negative signalof the pair, respectively. The output current of the driver of adifferential pair is defined as the current flowing out of the positive(+) output. The current passing through the negative (−) output of adifferential driver is always equal in magnitude but opposite indirection compared to the current passing through the positive (+)output of the same differential driver.

Sometimes the host or client simultaneously drive the differential pairto a logic-one level or a logic-zero level to guarantee a validlogic-level on the pair when the direction of data flow changes (fromhost-to-client or client-to-host). The output voltage range and outputspecifications are still met with simultaneously driven outputs drivento the same logic level. In some systems it may be necessary to drive asmall current into the terminated differential pair to create a smalloffset voltage at certain times during hibernation and when the link iswaking up from the hibernation state. In those situations, the enabledoffset-current bias circuits drive the current levels referred to as:I_(ESD-and-Rx)—internal ESD diode and differential receiver input withI_(ESD-and-Rx)≦1 μA typically; I_(Tx-Hi-Z)—differential driver output inthe high-impedance state, with I_(Tx-Hi-Z)≦1 μA typically; andI_(external-ESD)—the leakage through the external ESD protection diodes,with I_(external-ESD)≦3 μA typically.

Each of these leakage currents is illustrated in FIG. 47. The pull-upand pull-down circuits must achieve the minimum differential voltageunder the worst-case leakage conditions described above when all occursimultaneously. The total leakage is ≦4 μA for internal mode withoutexternal ESD protection diodes and ≦10 μA for external mode withexternal ESD protection.

The electrical parameters and characteristics of the differential linedrivers and line receivers are described for one exemplary embodiment inTables VIIa-VIId. Functionally, the driver transfers the logic level onthe input directly to a positive output, and the inverse of the input toa negative output. The delay from input to outputs is well-matched tothe differential line which is driven differentially. In mostimplementations, the voltage swing on the outputs is less than the swingon the input to minimize power consumption and electromagneticemissions. In one embodiment, there is a minimum voltage swing of around0.5V. However, other values can be used, as would be known by thoseskilled in the art, and the inventors contemplate a smaller value insome embodiments, depending on design constraints.

The differential line receivers have the same characteristic as ahigh-speed voltage comparator. In FIG. 41, the input without the bubbleis the positive input and the input with the bubble is the negativeinput. The output is a logic one if: (Vinput+)−(Vinput−) is greater thanzero. Another way to describe this is a differential amplifier with verylarge (virtually infinite) gain with the output clipped at logic 0 and 1voltage levels.

The delay skew between different pairs should be minimized to operatethe differential transmission system at the highest potential speed.

TABLE VIIa Host Transmitter Electrical Specifications ParameterDescription Min Max Unit V_(output-Range) Allowable host driver output0.35 1.60 V voltage range with respect to host ground I_(OD+) Driverdifferential output 2.5 4.5 mA high current corresponding to a logic-onelevel (while driving the terminated transmission line) I_(OD−) Driverdifferential output −4.5 −2.5 mA low current corresponding to alogic-zero level (while driving the terminated transmission line)T_(Rise–Fall) Rise and fall time (between 425 Note 1 psec 20% and 80%amplitude) of driver output, measured in differential mode T_(skew-pair)Skew between positive and 125 Psec negative outputs of the samedifferential pair (intra- pair skew) T_(Differential-) Peak delay skewbetween one See Psec _(Skew) differential pair and any above otherdifferential pair. T_(A) Jitter, bit boundary to 0 T_(B) -283 Pseccenter crossing T_(B-TP0-DRVR) Jitter, bit boundary to 0 See Psecminimum output level above Note 1: The maximum rise and fall time iseither 30% of the interval to transmit one bit on one differential pairor 100 nsec, whichever is smaller.

TABLE VIIb Client Transmitter Electrical Specifications ParameterDescription Min Max Unit V_(output-Range-) Allowable client driveroutput 0 1.25 V _(Ext) voltage range with respect to client ground(External Mode) V_(output-Range-) Allowable client driver output 0.351.60 V _(Int) voltage range with respect to client ground (InternalMode) I_(OD+) Driver differential output 2.5 4.5 mA high currentcorresponding to a logic-one level (while driving the equivalent of thepull-up and pull-down circuits that exist at the host and client)I_(OD−) Driver differential output low −4.5 −2.5 mA currentcorresponding t a logic-zero level (while driving the equivalent of thepull-up and pull-down circuits that exist at the host and client)T_(Rise–Fall) Rise and fall time (between 425 Note 1 psec 20% and 80%amplitude) of driver output, measured in differential mode T_(skew-pair)Skew between positive and 125 psec negative outputs of the samedifferential pair (intra-pair skew) T_(Differential-) Peak delay skewbetween one See psec _(Skew) differential pair and any above otherdifferential pair. T_(A) Jitter, bit boundary to T_(B) - psec centercrossing 283 T_(B-TP4-DRVR) Jitter, bit boundary to See psec minimumoutput level above Note 1: The maximum rise and fall time is 30% of theinterval to transmit one bit on one differential pair or 100 nsec,whichever is smaller.

TABLE VIIc Client Receiver Electrical Specifications ParameterDescription Min Typ Max Unit V_(IT+) Receiver differential input high 050 mV threshold voltage. Above this differential voltage the inputsignal is interpreted as a logic-one level. V_(IT−) Receiverdifferential input low −50 0 mV threshold voltage. Below thisdifferential voltage the input signal is interpreted as a logic-zerolevel. V_(IT+) Receiver differential input high 125 175 mV thresholdvoltage (offset for hibernation wake-up). Above this differentialvoltage the input signal is interpreted as a logic-one level. V_(IT−)Receiver differential input low 75 125 mV threshold voltage (offset forhibernation wake-up). Below this differential voltage the input signalis interpreted as a logic-zero level. V_(Input-Range) Allowable receiverinput voltage 0 1.65 V range with respect to client ground. R_(term)Parallel termination resistance value 98 100 102 Ω I_(in) Input leakagecurrent −10 10 μA C_(pad) Capacitance of pad to client ground (note 1) 5pF C_(diff) Capacitance between the two signals 1 pF of a differentialpair (note 1) T_(skew-pair-INT) Skew caused by the differential 250 psecreceiver between positive and negative inputs of the differentialreceiver of the same differential pair (intra-pair skew). Internal ModeT_(skew-pair-EXT) Intra-pair skew, External Mode 50 psecT_(Differential-) Peak delay skew between one See psec _(Skew)differential pair and any other above differential pair. T_(A) Jitter,bit boundary to center crossing T_(B) - psec 38.5 T_(B-TP4-RCVR-INT)Jitter, bit boundary to minimum input 0 See psec level above (InternalMode) T_(B-TP4-RCVR-EXT) Jitter, bit boundary to minimum input 0 Seepsec level above (External Mode)

TABLE VIId Host Receiver Electrical Specifications Parameter DescriptionMin Typ Max Unit V_(IT+) Receiver differential input high 0 50 mVthreshold voltage (non-offset). Above this differential voltage theinput signal is interpreted as a logic-one level. V_(IT−) Receiverdifferential input low threshold −50 0 mV voltage (non-offset). Belowthis differential voltage the input signal is interpreted as alogic-zero level. V_(IT+) Receiver differential input high 125 175 mVthreshold voltage (offset for hibernation wake-up). Above thisdifferential voltage the input signal is interpreted as a logic-onelevel. V_(IT−) Receiver differential input low threshold 75 125 mVvoltage (offset for hibernation wake-up). Below this differentialvoltage the input signal is interpreted as a logic-zero levelV_(Input-Range) Allowable receiver input voltage range 0 1.65 V withrespect to host ground. I_(in) Input leakage current (excluding −10 10μA hibernate bias) C_(pad) Capacitance of pad to host ground 5 pFC_(diff) Capacitance between the two signals of 1 pF a differentialpair. T_(skew-pair) Skew caused by the differential receiver 250 psecbetween positive and negative inputs of the differential receiver of thesame differential pair (intra-pair skew). T_(skew-pair-EXT) Intra-pairskew, External Mode 50 psec T_(A) Jitter, bit boundary to centercrossing T_(B) - psec 38.5 T_(B-TP0-RCVR-) Jitter, bit boundary tominimum output See psec _(INT) level (External Mode) above T_(B-TP0-)Jitter, bit boundary to minimum output See psec _(RCVR-EXT) level above(External Mode)

In FIG. 42, a host controller 4202 and a client or display controller4204 are shown transferring packets over the communication link 4206.The host controller employs a series of three drivers 4210, 4212, and4214 to receive the host DATA and STB signals to be transferred, as wellas to receive the client Data signals to be transferred, while theclient employs the three drivers 4230, 4232, and 4234. The driverresponsible for passage of the host DATA (4212) employs an enable signalinput to allow activation of the communication link generally only whentransfer from the host to the client is desired. Since the STB signal isformed as part of the transfer of data, no additional enable signal isemployed for that driver (4212). The inputs of each of the client DATAand STB receivers (4132, 4230) have termination impedances or resistors4218 and 4220, respectively paced across them. Driver 4234 in the clientcontroller is used to prepare the data signals being transferred fromthe client to the host, where driver 4214 on the input side, processesthe data.

The special receivers (drivers) 4216 and 4236 are coupled or connectedto the DATA lines, and generate or use the 125 mV voltage offsetpreviously discussed, as part of the hibernation control discussedelsewhere. The offsets cause the hibernation line receivers to interpretun-driven signal pairs as a logic-zero level.

The above drivers and impedances can be formed as discrete components oras part of a circuit module, or an application specific integratedcircuit (ASIC) which acts as a more cost effective encoder or decodersolution.

It can be easily seen that power is transferred to the client device, ordisplay, from the host device using the signals labeled HOST_Pwr andHOST_Gnd over a pair of conductors. The HOST_Gnd portion of the signalacts as the reference ground and the power supply return path or signalfor the client device. The HOST_Pwr signal acts as the client devicepower supply which is driven by the host device In an exemplaryconfiguration, for low power applications, the client device is allowedto draw up to 500 mA. The HOST_Pwr signal can be provided from portablepower sources, such as but not limited to, a lithium-ion type battery orbattery pack residing at the host device, and may range from 3.2 to 4.3volts with respect to HOST_Gnd.

VII. Timing Characteristics

A. Overview

The steps and signal levels employed to enter a hibernation state (noservice requested, desired, or required), and to secure service for aclient from the host, either by host- or client initiation, areillustrated in FIGS. 43 a, 43 b, and 43 c, respectively. In FIGS. 43 a,43 b, and 43 c, the first part of signals being illustrated shows a LinkShutdown Packet being transferred from the host and the data line isthen driven to a logic zero state using the high-impedance bias circuit.No data is being transmitted by the client, or host, which has itsdriver disabled. A series of strobe pulses for the MDDI_Stb signal linecan be seen at the bottom, since MDDI_Stb is active during the LinkShutdown Packet. Once this packet ends, the logic level changes to zeroas the host drives the bias circuit and logic to zero. This representsthe termination of the last signal transfer or service from the host,and could have occurred at any time in the past, and is included to showthe prior cessation of service, and the state of the signals prior toservice commencement. If desired, such as signal can be sent just toreset the communication link to the proper state without a ‘known’ priorcommunication having been undertaken by this host device.

As shown in FIG. 43 a, and discussed for the Link Shutdown Packet above,in the low-power hibernation state, the MDDI_Data0 driver is disabledinto a high-impedance state starting after the 16th to 48th MDDI_Stbcycles or pulses after the last bit of the All Zeros field in the LinkShutdown Packet. For Type-2, Type-3, or Type-4 links the MDDI_Data1through MDDI_DataPwr7 signals are also placed in a high-impedance stateat the same time that the MDDI_Data0 driver is disabled. As described inthe definition of the All Zeros field, MDDI_Stb toggles for 64 cycles(or as desired for system design) following the MSB of the CRC field ofthe Link Shutdown Packet to allow processing by the client to becompleted and facilitate an orderly shutdown in a client controller. Onecycle is a low-to-high transition followed by a high-to-low transition,or a high-to-low transition followed by a low-to-high transition. Afterthe All Zeros field is sent, the MDDI_Stb and MDDI_Data0 drivers in thehost are disabled, and the host enters the low-power hibernation state.After some period of time, the host commences the link restart sequenceas shown in FIGS. 43 b and 43 c, by enabling the MDDI_Data0 and MDDI_Stblines or driver outputs, and begins to toggle MDDI_Stb, as part ofeither at a host or client initiated wake-up request.

As shown in FIG. 43 b, after some time passes with the signal outputfrom drivers for MDDI_Data0 and MDDI_Stb disabled, a host initiatesservice or wake-up from hibernation by enabling its MDDI_Stb driver fora period of time designated t_(stb-dagta-enbl), during which the line isdriven to a logic zero level, until it is completely enabled and thenenabling its MDDI_Data0 driver. The host holds MDDI_Stb at logic-zerolevel after MDDI_Data0 reaches a high or a logic one level which occursover a period of time designated t_(client-startup). At the end of thet_(client-startup) period the host then toggles the MDDI_Stb signal orline. The host drives the MDDI_Data0 line high, a logic-one level, whilethe client does not drive MDDI_Data0, for a period designatedt_(restart-high), and then drives the MDDI_Data0 line low, or tologic-zero level, for a period designated t_(restart-low). After this,the first forward traffic begins with a Sub-Frame Header Packet, and theforward traffic packets are then transferred. The MDDI_Stb signal isactive during the t_(restart-low) period and the subsequent Sub-FrameHeader Packet.

As shown in FIG. 43 c, after some time passes with the signal outputfrom drivers for MDDI_Data0 and MDDI_Stb disabled, a client initiates aservice request or wake-up from hibernation by enabling an offset in theMDDI_Stb receiver or output signal for a period of time designatedt_(stb-dagta-enbl), as discussed above, before the host enables itsMDDI_Stb driver. The client then enables its MDDI_Data0 driver for aperiod of time designated t_(host-detect), during which the line isdriven to a logic zero level, before the host begins MDDI_Stb toggling.

A certain amount of time passes or may be needed before the host detectsthe request during t_(host-detect), after which the host responds byholding MDDI_Stb at logic-zero level for the period designatedt_(stb-startup) before the host begins toggling MDDI_Stb with a linkstartup sequence by driving the MDDI_Data0 to a logic-one or high levelduring the t_(restart-high) period. When the client recognizes the firstpulse on MDDI_Stb it disables the offset in its MDDI_Stb receiver. Theclient continues to drive MDDI_Data0 to a logic-one level or a perioddesignated t_(client-detect) until it detects the host driving the line.At this point, the client de-asserts the request, and disables itsMDDI_Data0 driver so that the output from the client goes to alogic-zero level again, and the host is driving MDDI_Data0. As before,the host continues to drive MDDI_Data0 to a logic-one level for thet_(restart-high) period, and then drives the MDDI_Data0 line low for thet_(restart-low) period, after which the first forward traffic beginswith a Sub-Frame Header Packet. The MDDI_Stb signal is active during thet_(restart-low) period and the subsequent Sub-Frame Header Packet.

Table VIII shows representative times or processing periods for thelength of the various periods discussed above, and the relationship toexemplary minimum and maximum data rates, where:

${t_{bit} = \frac{1}{{Link\_ Data}{\_ Rate}}},$where Link_Data_Rate is the bit rate of a single data pair.

TABLE VIII Parameter Description Min. Typ. Max. Units 1/t_(BIT-min-perf)Link data rate for a minimum 0.001   1.1 Mbps performance device1/t_(BIT-max-perf) Maximum link data rate range for a 0.001 400 Mbpsdevice, external 1/t_(BIT-max-perf) Maximum link data rate range for a0.001 550 Mbps device, internal Reverse Link data rate 0.0005  50 Mbpst_(BIT) Period of one forward link 2.5  10⁶ nsec data bit, external modet_(BIT) Period of one forward link 1.8  10⁶ nsec data bit, internal modet_(restart-high) Duration of host link restart 140 150 160 Stb highpulse clks t_(restart-low) Duration of host link restart 50 50  50 Stblow pulse clks t_(stb-data-enabl) MDDI_Stb completely enabled toMDDI_Data0 0 μsec enabled link restart sequence t_(client-startup) Timefor host to hold MDDI_Stb at logic-zero 200 nsec level after MDDI_Data0reaches logic-high level t_(host-detect) Time from MDDI_Data0 high toMDDI_Stb 0 1000  μsec toggling t_(client-detect) Time for client todetect MDDI_Data0 at 60  80 Stb logic-high level performance device clkst_(stb-startup) Time for host to hold MDDI_Stb at logic-zero 200 nseclevel before host begins toggling MDDI_Stb

Those skilled in the art will readily understand that the functions ofthe individual elements illustrated in FIGS. 41 and 42, are well known,and the function of the elements in FIG. 42 is confirmed by the timingdiagram in FIGS. 43 a, 43 b, and 43 c. Details about the seriesterminations and hibernation resistors that are shown in FIG. 42 wereomitted from FIG. 41 because that information is unnecessary for adescription of how to perform the Data-Strobe encoding and recover theclock from it.

B. Data-Strobe Timing Forward Link

The switching characteristics for the transfer of data on the forwardlink from the host driver output is shown in Table IX-1. Table IXpresents a tabular form of the minimum and maximum desired, versustypical times for certain signal transitions to occur. For example, thetypical length of time for a transition to occur from the start to theend of a data value (output of a ‘0’ or ‘1’), a Data0 to Data0transition, termed t_(tdd)-(host-output), is t_(tbit) while the minimumtime is about t_(tbit)−0.5 nsec., and the maximum is about t_(tbit)+0.5nsec. The relative spacing between transitions on the Data0, other datalines (DataX), and the strobe lines (Stb), is illustrated in FIG. 44where the Data0 to Strobe, Strobe to Strobe, Strobe to Data0, Data0 tonon-Data0, non-Data0 to non-Data0, non-Data0 to Strobe, and Strobe tonon-Data0 transitions are shown, which are referred to ast_(tds-(host-output)), t_(tss-(host-output)), t_(tsd-(host-output)),t_(tddx-(host-output)), t_(tdxdx-(host-output)), t_(tdxs-(host-output)),and t_(tsdx-(host-output)), respectively.

TABLE IX-1 Parameter Description Min. Typ. Max. Unitst_(tdd-(host-output)) Data0 to Data0 transition t_(tbit) − 0.5 t_(tbit)t_(tbit) + 0.5 nsec t_(tds-(host-output)) Data0 to Strobe transitiont_(tbit) − 0.8 t_(tbit) t_(tbit) + 0.8 nsec t_(tss-(host-output)) Strobeto Strobe transition t_(tbit) − 0.5 t_(tbit) t_(tbit) + 0.5 nsect_(tsd-(host-output)) Strobe to Data0 transition t_(tbit) − 0.8 t_(tbit)t_(tbit) + 0.8 nsec t_(tddx-(host-output)) Data0 to non-Data0 transitiont_(tbit) nsec t_(tdxdx-(host-output)) non-Data0 to non-Data0 transitiont_(tbit) − 0.5 t_(tbit) t_(tbit) + 0.5 nsec t_(tdxs-(host-output))non-Data0 to Strobe transition t_(tbit) nsec t_(tsdx-(host-output))Strobe to non-Data0 transition t_(tbit) nsec

The typical MDDI timing requirements for the client receiver input forthe same signals transferring data on the forward link is shown in TableIX-2. Since the same signals are being discussed but time delayed, nonew figure is needed to illustrate the signal characteristics or meaningof the respective labels, as would be understood by those skilled in theart.

TABLE IX-2 Parameter Description Min. Typ. Max. Unitst_(tdd-(client-input)) Data0 to Data0 transition t_(tbit) − 1.0 t_(tbit)t_(tbit) + 1.0 nsec t_(tds-(client-input)) Data0 to Strobe transitiont_(tbit) − 1.5 t_(tbit) t_(tbit) + 1.5 nsec t_(tss-(client-input))Strobe to Strobe transition t_(tbit) − 1.0 t_(tbit) t_(tbit) + 1.0 nsect_(tsd-(client-input)) Strobe to Data0 transition t_(tbit) − 1.5t_(tbit) t_(tbit) + 1.5 nsec t_(tddx-(host-output)) Data0 to non-Data0transition t_(tbit) nsec t_(tdxdx-(host-output)) non-Data0 to non-Data0transition t_(tbit) nsec t_(tdxs-(host-output)) non-Data0 to Strobetransition t_(tbit) nsec t_(tsdx-(host-output)) Strobe to non-Data0transition t_(tbit) nsec

FIGS. 45 and 46 illustrate the presence of a delay in response that canoccur when the host disables or enables the host driver, respectively.In the case of a host forwarding certain packets, such as the ReverseLink Encapsulation Packet or the Round Trip Delay Measurement Packet,the host disables the line driver after the desired packets areforwarded, such as the Parameter CRC, Strobe Alignment, and All Zeropackets illustrated in FIG. 45 as having been transferred. However, asshown in FIG. 45, the state of the line does not necessarily switch from‘0’ to a desired higher value instantaneously, although this ispotentially achievable with certain control or circuit elements present,but takes a period of time termed the host Driver Disable Delay periodto respond. While it could occur virtually instantly such that this timeperiod is 0 nanoseconds (nsec.) in length, it could more readily extendover some longer period with 10 nsec. being a desired maximum periodlength, which occurs during the Guard Time 1 or Turn Around 1 packetperiods.

Looking in FIG. 46, one sees the signal level change undergone when thehost Driver is enabled for transferring a packet such as the ReverseLink Encapsulation Packet or the Round Trip Delay Measurement Packet.Here, after the Guard Time 2 or Turn Around 2 packet periods, the hostdriver is enabled and begins to drive a level, here ‘0’, which value isapproached or reached over a period of time termed the Host DriverEnable Delay period, which occurs during the Driver Re-enable period,prior to the first packet being sent.

A similar process occurs for the drivers and signal transfers for theclient device, here a display. The general guidelines for the length ofthese periods, and their respective relationships are shown in Table X,below.

TABLE X Description Min. Max. Units Host Driver Disable Delay 0 10 nsecHost Driver Enable Delay 0 2.0 nsec Display Driver Disable Delay 0 10nsec Display Driver Enable Delay 0 2.0 nsec

C. Host and Client Output Enable and Disable Times

The switching characteristics and relative timing relationships for Hostand Client output enabled and disable time or operations relative to theReverse Link Encapsulation Packet structure and period, is shown in FIG.48. The driver output functions or operations are labeled as:t_(host-enable) for the Host output enable time, t_(host-disable) forthe Host output disable time, t_(client-enable) for the Client outputenable time, and t_(client-disable) for the Client output disable time.Typical times for certain signal transitions are discussed below. Theminimum period for these operations would be zero nanoseconds, withtypical or maximum values determined from the system design employingthe interface, possibly on the order of 8 nanoseconds, or more.

The general guidelines for the length of these periods, (host and clientenable/disable times) and their respective relationships are shown inTable XI, below.

TABLE XI Parameter Description Min. Typ. Max. Units t_(host-enable) Hostoutput enable time 0 24 · t_(BIT) nsec t_(host-disable) Host outputdisable time, 0 24 · t_(BIT) nsec entire length of the Turn-Around 1field t_(client-enable) Client output enable time, 0 24 · t_(BIT) nsecentire length of the Turn-Around 1 field t_(client-disable) Clientoutput disable time, 0 24 · t_(BIT) nsec measured from the end of thelast bit of the Turn-Around 2 fieldVIII. Implementation of Link Control (Link Controller Operation)

A. State Machine Packet Processor

Packets being transferred over a MDDI link are dispatched very rapidly,typically at a rate on the order of 300 Mbps or more, such as 400 Mbps,although lower rates are certainly accommodated, as desired. This typeof bus or transfer link speed is too great for currently commerciallyavailable (economical) general-purpose microprocessors or the like tocontrol. Therefore, a practical implementation to accomplish this typeof signal transfer is to utilize a programmable state machine to parsethe input packet stream to produce packets that are transferred orredirected to the appropriate audio-visual subsystem for which they areintended. Such devices are well known and use circuits generallydedicated to a limited number of operations, functions, or states toachieve a desired high speed or very high speed operation.

General purpose controllers, processors, or processing elements, can beused to more appropriately act upon or manipulate some information suchas control or status packets, which have lower speed demands. When thosepackets (control, status, or other pre-defined packets) are received,the state machine should pass them through a data buffer or similarprocessing element to the general-purpose processor so the packets canbe acted upon to provide a desired result (effect) while the audio andvisual packets are transferred to their appropriate destination foraction. If future, microprocessors or other general purpose controllers,processors, or processing elements are manufactured to achieve higherdata rate processing capabilities, then the states or state machinediscussed below might also be implemented using software control of suchdevices, typically as programs stored on a storage element or media.

The general purpose processor function can be realized in someembodiments by taking advantage of the processing power, or excesscycles available for, microprocessors (CPUs) in computer applications,or controllers, processors, digital signal processors (DSPs),specialized circuits, or ASICs found in wireless devices, in much thesame manner as some modems or graphics processors utilize the processingpower of CPUs found in computers to perform some functions and reducehardware complexity and costs. However, this cycle sharing or usage cannegatively impact the processing speed, timing, or overall operation ofsuch elements, so in many applications, dedicated circuits or elementsare preferred for this general processing.

In order for image data to be viewed on a display (micro-display), or toreliably receive all packets sent by the host device, the client signalprocessing is synchronized with the forward link channel timing. Thatis, signals arriving at the client and the client circuits need to besubstantially time synchronized for proper signal processing to occur. Ahigh level diagram of states achieved by signal for one embodiment ispresented in the illustration of FIG. 49. In FIG. 49, the possibleforward link synchronization “states” for a state machine 4900 are shownbeing categorized as one ASYNC FRAMES STATE 4904, two ACQUIRING SYNCSTATES 4902 and 4906, and three IN-SYNC STATES 4908, 4910, and 4912.

As shown by starting step or state 4902, the display or client, such asa presentation device, starts in a pre-selected “no sync” state, andsearches for a unique word in the first sub-frame header packet that isdetected. It is to be noted that this no sync state represents theminimum communication setting or “fall-back” setting in which a Type 1interface is selected. When the unique word is found during the search,the client saves the sub-frame length field. There is no checking of theCRC bits for processing on this first frame, or until synchronization isobtained. If this sub-frame length is zero, then sync state processingproceeds accordingly to a state 4904 labeled here as the “async frames”state, which indicates that synchronization has not yet been achieved.This step in the processing is labeled as having encountered cond 3, orcondition 3, in FIG. 49. Otherwise, if the frame length is greater thanzero, then the sync state processing proceeds to a state 4906 where theinterface state is set as “found one sync frame.” This step in theprocessing is labeled as encountering cond 5, or condition 5, in FIG.49. In addition, if the state machine sees a frame header packet andgood CRC determination for a frame length greater than zero, processingproceeds to the “found one sync frame” state. This is labeled as meetingcond 6, or condition 6, in FIG. 49.

In each situation in which the system is in a state other than “nosync,” if a packet with a good CRC result is detected, then theinterface state is changed to the “in-sync” state 4908. This step in theprocessing is labeled as having encountered cond 1, or condition 1, inFIG. 49. On the other hand, if the CRC in any packet is not correct,then the sync state processing proceeds or returns to the interfacestate 4902 of “NO SYNC FRAME” state. This portion of the processing islabeled as encountering cond 2, or condition 2, in the state diagram ofFIG. 49.

B. Acquisition Time for Sync

The interface can be configured to accommodate a certain number of “syncerrors” prior to deciding that synchronization is lost and returning tothe “NO SYNC FRAME” state. In FIG. 49, once the state machine hasreached the “IN-SYNC STATE” and no errors are found, it is continuouslyencountering a cond 1 result, and remains in the “IN-SYNC” state.However once one cond 2 result is detected, processing changes the stateto a “one-sync-error” state 4910. At this point, if processing resultsin detecting another cond 1 result, then the state machine returns tothe “in-sync” state, otherwise it encounters another cond 2 result, andmoves to a “TWO-SYNC-ERRORS” state 4912. Again, if a cond 1 occurs,processing returns the state machine to the “IN-SYNC” state. Otherwise,another cond 2 is encountered and the state machine returns to the“no-sync” state. It is also understandable that should the interfaceencounter a “link shutdown packet,” then this will cause the link toterminate data transfers and return to the “no-sync frame” state asthere is nothing to synchronize with, which is referred to as meetingcond 4, or condition 4, in the state diagram of FIG. 49.

It is understood that it is possible for there to be a repeating “falsecopy” of the unique word which may appear at some fixed location withinthe sub-frame. In that situation, it is highly unlikely that the statemachine will synchronize to the sub-frame because the CRC on thesub-frame Header Packet must also be valid when processed in order forthe MDDI processing to proceed to the “IN SYNC” state.

The sub-frame length in the sub-frame Header Packet may be set to zeroto indicate that the host will transmit only one sub-frame before thelink is shut down, and the MDDI is placed in or configured into an idlehibernation state. In this case, the client must immediately receivepackets over the forward link after detecting the sub-frame HeaderPacket because only a single sub-frame is sent before the linktransitions to the idle state. In normal or typical operations, thesub-frame length is non-zero and the client only processes forward linkpackets while the interface is in those states collectively shown as“IN-SYNC” states in FIG. 49.

An external mode client device may be attached to the host while thehost is already transmitting a forward link data sequence. In thissituation, the client must synchronize to the host. The time requiredfor a client to synchronize to the forward link signal is variabledepending on the sub-frame size and the forward link data rate. Thelikelihood of detecting a “false copy” of the unique word as part of therandom, or more random, data in the forward link is greater when thesub-frame size is larger. At the same time, the ability to recover froma false detection is lower, and the time taken to do so is longer, whena forward link data rate is slower.

For one or more embodiments, it recommended or understood that a MDDIhost should perform certain additional steps to ensure that the MDDIreverse link is stable before it stops forward link transmission to goto a low power mode or to shut down the link completely.

One problem that can occur is that if a host uses an incorrectmeasurement of the round-trip delay value this can cause allsubsequently received reverse data transmission from the client to faileven though the forward link appears to be fine. This could happen ifthe host tries to send a Round Trip Delay Measurement Packet when theclient is not in sync with the forward link, or due to an extremeambient temperature change that causes a corresponding large change inthe propagation delay of the differential drivers and receivers whichaffects the round trip delay. An intermittent cable or connector contactfailure could also cause the client to temporarily lose synchronizationand then regain sync, during which time, it may miss receiving a RoundTrip Delay Measurement Packet. Subsequent reverse link packets would notbe able to be decoded properly by the host.

Another type of problem that can occur is that if the client temporarilyloses sync and the host sends a Link Shutdown Packet before the clientis able to regain sync. The host will be in hibernation while the clientis unable to enter the hibernation state because it did not receive theLink Shutdown Packet and does not have a clock because the link is inhibernation.

One technique or embodiment useful for overcoming such problems is tohave the host ensure that the client is in sync with the forward linkbefore putting the link into the hibernation state. If the MDDI host isunable to do this or does not have such an opportunity, such as when itloses power or the link is abruptly broken or fails due to a cable,conductor, or connector separation, break, or disconnection occurringduring operation, then the host should first try to ensure that theclient is in sync before starting a round-trip delay measurement processor sending a Reverse Link Encapsulation packet.

A host can observe the CRC Error Count field in a Client Request andStatus packet sent by the client to determine the forward linkintegrity. This packet is requested by the host from the client.However, in the event of a major link failure or disruption, thisrequest will most likely go unanswered since a client will not be ableto properly decode the packet, or maybe even receive it altogether. Therequest for the CRC Error Count using the Client Request and StatusPacket sent in a Reverse Link Encapsulation Packet acts as a firstintegrity check, a sort of first line of defense. In addition, a hostcan send a Round Trip Delay Measurement Packet to confirm whether or notthe assumption about the client having fallen out of sync is a valid oneor not. If the client does not respond to a Round Trip Delay MeasurementPacket, the host will conclude that the client is out of sync and canthen start the process of getting it back in sync.

Once the host concludes that the client has more than likely lostsynchronization with the forward link, it waits until the next subframeheader before attempting to send any packets other than filler packets.This is done in order to allow a client enough time to detect or lookfor one unique word contained in the subframe header packet. Followingthis, the host may assume that the client would have reset itself sinceit would not have found the unique word at the correct location. At thispoint, the host may follow the subframe header packet with a Round TripDelay Measurement Packet. If the client still does not respond correctlyto the Round Trip Delay Measurement Packet, the host may repeat theresynchronization process. A correct response is one in which the clientsends the specified sequence back to the host in the Measurement Periodof the Round Trip Delay Measurement Packet. If this sequence is notreceived, then attempts to receive reverse data in a Reverse LinkEncapsulation Packet will fail. Continued failure of this nature mayindicate some other system error which will have to be addressed in someother manner, and is not part of the link synchronization at this point.

However, if after a successful Round Trip Delay Measurement Packet thehost still sees corrupted data or no response in the Reverse LinkEncapsulation Packets, it should confirm the reverse data sampling iscorrect by re-sending a Round Trip Delay Measurement Packet. If this isnot successful after a number of attempts it is recommended for oneembodiment that the host reduce the reverse data rate by increasing thereverse rate divisor value.

The host should perform the Link Failure Detection and possibly the LinkResynchronization steps described above before placing the MDDI linkinto the hibernation state. This will generally ensure that the RoundTrip Delay Measurement Packet performed when the link is restarted lateron is successful. If the host has no reason to suspect a link failure,and a correct response to a Reverse Link Encapsulation Packet and zeroforward link CRC errors is being reported by the client, a host mayassume that everything is operating or functioning accordingly orappropriately (no link failure for example) and proceed with the powerdown/hibernation process.

Another manner in which a host can test for synchronization is for thehost to send the Round Trip Delay Measurement Packet and confirm theproper response from the client. If the proper response is received bythe host, it can reasonably be assumed that the client is successfullyinterpreting forward link packets.

C. Initialization

As stated earlier, at the time of “start-up,” the host configures theforward link to operate at or below a minimum required, or desired, datarate of 1 Mbps, and configures the sub-frame length and media-frame rateappropriately for a given application. That is, both the forward andreverse links begin operation using the Type 1 interface. Theseparameters are generally only going to be used temporarily while thehost determines the capability or desired configuration for the clientdisplay (or other type of client device). The host sends or transfers asub-frame Header Packet over the forward link followed by a Reverse LinkEncapsulation Packet which has bit ‘0’ of the Request Flags set to avalue of one (1), in order to request that the display or clientresponds with a Client Capability Packet. Once the display acquiressynchronization on (or with) the forward link, it sends a ClientCapability Packet and a Client Request and Status Packet over thereverse link or channel.

The host examines the contents of the Client Capability Packet in orderto determine how to reconfigure the link for optimal or a desired levelof performance. The host examines the Protocol Version and MinimumProtocol Version fields to confirm that the host and client use versionsof the protocol that are compatible with each other. The protocolversions generally remain as the first two parameters of the clientcapability Packet so that compatibility can be determined even whenother elements of the protocol might not be compatible or completelyunderstood as being compatible.

In internal mode the host can know the parameters of the client inadvance without having to receive a Client Capability Packet. The linkmay start up at any data rate at which the host and client can bothoperate. In many embodiments, a system designer will most likely chooseto start the link at the maximum achievable data rate to hasten datatransfer, however, this is not required and may not be used in manysituations. For internal mode operation, the frequency of the strobepulses used during the link restart from hibernation sequence willusually be consistent with this desired rate.

D. CRC Processing

For all packet types, the packet processor state machine ensures thatthe CRC checker is controlled appropriately or properly. It alsoincrements a CRC error counter when a CRC comparison results in one ormore errors being detected, and it resets the CRC counter at thebeginning of each sub-frame being processed.

E. Alternative Loss of Synchronization Check

While the above series of steps or states work to produce higher datarates or throughput speed, Applicants have discovered that analternative arrangement or change in the conditions the client uses todeclare that there is a loss of synchronization with the host, can beused effectively to achieve even higher data rates or throughput. Thenew inventive embodiment has the same basic structure, but with theconditions for changing states changed. Additionally a new counter isimplemented to aid in making checks for sub-frame synchronization. Thesesteps and conditions are presented relative to FIG. 63, whichillustrates a series of states and conditions useful in establishing theoperations of the method or state machine. Only the “ACQUIRING-SYNCSTATES” and “IN-SYNC STATES” portions are shown for clarity. Inaddition, since the resulting states are substantially the same, as isthe state machine itself, they use the same numbering. However, theconditions for changing states (and the state machine operation) varysomewhat, so that all are renumbered for clarity between the two figures(1, 2, 3, 4, 5, and 6, versus 61, 62, 63, 64, and 65), as a conveniencein identifying differences. Since the ASYNC FRAME state is notconsidered in this discussion, one state (4904) and condition (6) are nolonger used in the figure.

In FIG. 63, the system or client (for display or presentation) startswith state machine 5000 in the pre-selected “no sync” state 4902, as inFIG. 49. The first state change for changing states from the no-synccondition 4902 is in condition 64 which is the discovery of the syncpattern. Assuming that the CRC of the sub-frame header also passes onthis packet (meets condition 61), the state of the packet processorstate machine can be changed to the in-sync state 4908. A sync error,condition 62, will cause the state machine to shift to state 4910, and asecond occurrence to state 4912. However, it has been discovered thatany CRC failure of an MDDI packet will cause the state machine to moveout of in-sync state 4908, to the one sync error state 4910. Another CRCfailure of any MDDI packet will cause a move to the two sync failurestate 4912. A packet decoded with a correct CRC value will cause thestate machine to return to the in-sync state 4908.

What has been changed is to utilize the CRC value or determination for‘every’ packet. That is, to have the state machine look at the CRC valuefor every packet to determine a loss of synchronization instead of justobserving sub-frame header packets. In this configuration or process, aloss of synchronization is not determined using the unique word and justsub-frame header CRC values.

This new interface implementation allows the MDDI link to recognizesynchronization failures much more quickly, and, therefore, to recoverfrom them more quickly, as well.

To make this system more robust, the client should also add or utilize asub-frame counter. The client then checks for the presence of the uniqueword at the time it is expected to arrive or occur in a signal. If theunique word does not occur at the correct time, the client can recognizethat a synchronization failure has occurred much more quickly than if ithad to wait several (here three) packet times or periods that weregreater than a sub-frame length. If the test for the unique wordindicates it is not present, in other words that the timing isincorrect, then the client can immediately declare a link loss ofsynchronization and move to the no-sync state. The process of checkingfor the proper unique word presence, adds a condition 65 (cond 65) tothe state machine saying that the unique word is incorrect. If asub-frame packet is expected to be received on the client and doesn'tmatch up, the client can immediately go to the no-sync state 4902,saving additional time waiting for multiple sync errors (condition 62)normally encountered traversing through states 4910 and 4912.

This change uses an additional counter or counting function in theclient core to count sub-frame length. In one embodiment, a count downfunction is used and the transfer of any packet that was currently beingprocessed is interrupted to check for the sub-frame unique word if thecounter has expired. Alternatively, the counter can count up, with thecount being compared to a desired maximum or particular desired value,at which point the current packet is checked. This process protects theclient from decoding packets that are incorrectly received on the clientwith extraordinarily long packet lengths. If the sub-frame lengthcounter needed to interrupt some other packet that was being decoded, aloss of synchronization can be determined since no packet should cross asub-frame boundary.

IX. Packet Processing

For each type of packet discussed above that the state machine receives,it undertakes a particular processing step or series of steps toimplement operation of the interface. Forward link packets are generallyprocessed according to the exemplary processing listed in Table XIIbelow.

TABLE XII Packet processor state Packet type machine response Sub-FrameHeader (SH) Confirms good packet, captures sub-frame length field, andsends packet parameters to a general purpose processor. Filler (F)Ignores data. Video Stream (VS) Interprets the Video Data FormatDescriptor and other parameters, unpacks packed pixel data whennecessary, translates pixels through the color map if necessary, andwrites pixel data to appropriate locations in the bitmap. Audio Stream(AS) Sends audio sample rate setting to audio sample clock generator,separates audio samples of specified size, unpacks audio sample datawhen necessary, and routes audio samples to appropriate audio sampleFIFO Color Map (CM) Reads color map size and offset parameters, andwrites the color map data to a color map memory or storage location.Reverse Link Encapsulation Facilitates sending packets in (REL) reversedirection at the appropriate time. Reverse link flags are examined, andClient Capability packets are sent as necessary. Client Request andStatus packets are also sent as appropriate. Client Capability (CC)Sends this type of packet when requested by a host using the reverselink flags field of the Reverse Link Encapsulation Packet. Keyboard (K)Passes these packets to and from a general purpose processor thatcommunicates with a keyboard type device, if one is present, and use isdesired. Pointing Device (PD) Passes these packets to and from a generalpurpose processor that communicates with a pointing type device, if oneis present, and use is desired. Link Shutdown (LS) Records fact link isshut down and informs a general-purpose processor. Client ServiceRequest and Sends this packet as the first Status (CSRS) packet in theReverse Link Encapsulation packet. Bit Block Transfer (BPT) Interpretspacket parameters, such as Video Data Format Descriptor, determineswhich pixels to move first, and moves pixels in bitmap as required.Bitmap Area Fill (BAF) Interprets packet parameters, translates pixelsthrough color map if necessary, and writes pixel data to appropriatelocations in bitmap, Bitmap Pattern Fill (BPF) Interprets packetparameters, unpacks packed pixel data if necessary, translates pixelsthrough color map if necessary, and writes pixel data to appropriatelocations in bitmap. Communication Link Channel Sends this data directlyto (CLC) a general-purpose processor. Client Service RequestGeneral-purpose processor (CSR) during hibernation controls thelow-level functions of sending request and detects contention with linkrestarting on its own. Interface Type Handoff May pass these packets toand Request (ITHR) and from the general-purpose Interface Typeprocessor. The logic to Acknowledge (ITA) receive this type of packetand formulate a response with an acknowledgment is substantiallyminimal. Therefore, this operation could also be implemented within thepacket processor state machine. The resulting handoff occurs as alow-level physical layer action and is not likely to affect thefunctionality or functioning of the general- purpose processor. PerformType Handoff (PTH) May act on such packets either directly or bytransferring them to the general-purpose processor, also commandinghardware to undergo a mode change.X. Reducing the Reverse Link Data Rate

It has been observed by the inventors that certain parameters used forthe host link controller can be adjusted or configured in a certainmanner in order to achieve a maximum or more optimized (scale) reverselink data rate, which is very desirable. For example, during the timeused to transfer the Reverse Data Packets field of the Reverse LinkEncapsulation Packet, the MDDI_Stb signal pair toggles to create aperiodic data clock at half the forward link data rate. This occursbecause the host link controller generates the MDDI_Stb signal thatcorresponds to the MDDI_Data0 signal as if it were sending all zeroes.The MDDI_Stb signal is transferred from the host to a client where it isused to generate a clock signal for transferring reverse link data fromthe client, with which reverse data is sent back to the host. Anillustration of typical amounts of delay encountered for the signaltransfer and processing on the forward and reverse paths in a systememploying the MDDI, is shown in FIG. 50. In FIG. 50, a series of delayvalues 1.5 nsec., 8.0 nsec., 2.5 nsec., 2.0 nsec., 1.0 nsec., 1.5 nsec.,8.0 nsec., and 2.5 nsec., are shown near processing portions for theStb+/− generation, cable transfer-to-client, client receiver, clockgeneration, signal clocking, Data0+/− generation, cabletransfer-to-host, and host receiver stages, respectively.

Depending on the forward link data rate and signal processing delaysencountered, it may require more time than one cycle on the MDDI_Stbsignal for this “round trip” effect or set of events to be completed,which results in the consumption undesirable amounts of time or cycles.To circumvent this problem, the Reverse Rate Divisor makes it possiblefor one bit time on the reverse link to span multiple cycles of theMDDI_Stb signal. This means that the reverse link data rate is less thanthe forward link rate.

It should be noted that the actual length of signal delays through theinterface may differ depending on each specific host-client system orhardware being used. Although not required, each system can generally bemade to perform better by using the Round Trip Delay Measurement Packetto measure the actual delay in a system so that the Reverse Rate Divisorcan be set to an optimum value. The host may support either basic datasampling which is simper but operates at a slower speed or advanced datasampling that is more complex but supports higher reverse data rates.The client capability to support both methods is considered the same

A round-trip delay is measured by having the host send a Round TripDelay Measurement Packet to the client. The client responds to thispacket by sending a sequence of ones back to the host inside of, orduring, a pre-selected measurement window in that packet called theMeasurement Period field. The detailed timing of this measurement wasdescribed previously. The round-trip delay is used to determine the rateat which the reverse link data can be safely sampled.

The round-trip delay measurement consists of determining, detecting, orcounting the number of forward link data clock intervals occurringbetween the beginning of the Measurement Period field and the beginningof the time period when the 0xff, 0xff, 0x00 response sequence isreceived back at the host from the client. Note that it is possible thatthe response from the client could be received a small fraction of aforward link clock period before the measurement count was about toincrement. If this unmodified value is used to calculate the ReverseRate Divisor it could cause bit errors on the reverse link due tounreliable data sampling. An example of this situation is illustrated inFIG. 51, where signals representing MDDI_Data at host, MDDI_Stb at host,forward link data clock inside the host, and a Delay Count areillustrated in graphical form. In FIG. 51, the response sequence wasreceived from the client a fraction of a forward link clock periodbefore the Delay Count was about to increment from 6 to 7. If the delayis assumed to be 6, then the host will sample the reverse data justafter a bit transition or possibly in the middle of a bit transition.This could result in erroneous sampling at the host. For this reason,the measured delay should typically be incremented by one before it isused to calculate the Reverse Rate Divisor.

The Reverse Rate Divisor is the number of MDDI_Stb cycles the hostshould wait before sampling the reverse link data. Since MDDI_Stb iscycled at a rate that is one half of the forward link rate, thecorrected round-trip delay measurement needs to be divided by 2 and thenrounded up to the next integer. Expressed as a formula, thisrelationship is:

${{reverse\_ rate}{\_ divisor}} = {{RoundUpToNextInteger}( \frac{{{round\_ trip}{\_ delay}} + 1}{2} )}$

For the example given, this becomes:

${{reverse\_ rate}{\_ divisor}} = {{{RoundUpToNextInteger}( \frac{6 + 1}{2} )} = 4}$

If the round trip delay measurement used in this example were 7 asopposed to 6, then the Reverse Rate Divisor would also be equal to 4.

The reverse link data is sampled by the host on the rising edge of theReverse Link Clock. There is a counter or similar known circuit ordevice present in both the host and client (display) to generate theReverse Link Clock. The counters are initialized so that the firstrising edge of the Reverse Link Clock occurs at the beginning of thefirst bit in the Reverse Link Packets field of the Reverse LinkEncapsulation packet. This is illustrated, for the example given below,in FIG. 52A. The counters increment at each rising edge of the MDDI_Stbsignal, and the number of counts occurring until they wrap around is setby the Reverse Rate Divisor parameter in the Reverse Link EncapsulationPacket. Since the MDDI_Stb signal toggles at one half of the forwardlink rate, then the reverse link rate is one half of the forward linkrate divided by the Reverse Rate Divisor. For example, if the forwardlink rate is 200 Mbps and the Reverse Rate Divisor is 4 then the reverselink data rate is expressed as:

${\frac{1}{2} \cdot \frac{200\mspace{14mu}{Mbps}}{4}} = {25\mspace{14mu}{Mbps}}$

An example showing the timing of the MDDI_Data0 and MDDI_Stb signallines in a Reverse Link Encapsulation Packet is shown in FIG. 52, wherethe packet parameters used for illustration have the values:

Packet Length = 1024 (0x0400) Turn Around 1 Length = 1 Packet Type = 65(0x41) Turn Around 2 Length = 1 Reverse Link Flags = 0 Reverse RateDivisor = 2 Parameter CRC = 0xdb43 All Zero is 0x00

Packet data between the Packet Length and Parameter CRC fields is:0x00, 0x04, 0x41, 0x00, 0x02, 0x01, 0x01, 0x43, 0xdb, 0x00, . . .

The first reverse link packet returned from the client is the ClientRequest and Status Packet having a Packet Length of 7 and a packet typeof 70. This packet begins with the byte values 0x07, 0x00, 0x46, . . .and so forth. However, only the first byte (0x07) is visible in FIG. 52.This first reverse link packet is time-shifted by nearly one reverselink clock period in the figure to illustrate an actual reverse linkdelay. An ideal waveform with zero host to client round-trip delay isshown as a dotted-line trace.

The MS byte of the Parameter CRC field is transferred, preceded bypacket type, then the all zero field. The strobe from the host isswitching from one to zero and back to one as the data from the hostchanges level, forming wider pulses. As the data goes to zero, thestrobe switches at the higher rate, only the change in data on the dataline causes a change near the end of the alignment field. The strobeswitches at the higher rate for the remainder of the figure due to thefixed 0 or 1 levels of the data signal for extended periods of time, andthe transitions falling on the pulse pattern (edge).

The reverse link clock for the host is at zero until the end of the TurnAround 1 period, when the clock is started to accommodate the reverselink packets. The arrows in the lower portion of the figure indicatewhen the data is sampled, as would be apparent from the remainder of thedisclosure. The first byte of the packet field being transferred (here11000000) is shown commencing after Turn Around 1, and the line levelhas stabilized from the host driver being disabled. The delay in thepassage of the first bit, and as seen for bit three, can bee seen in thedotted lines for the Data signal.

In FIG. 53, one can observe typical values of the Reverse Rate Divisorbased on the forward link data rate. The actual Reverse Rate Divisor isdetermined as a result of a round-trip link measurement to guaranteeproper reverse link operation. A first region 5302 corresponds to anarea of safe operation, a second region 5304 corresponds to an area ofmarginal performance, while a third region 5306 indicates settings thatare unlikely to function properly.

The round-trip delay measurement and Reverse Rate Divisor setting arethe same while operating with any of the Interface Type settings oneither the forward or reverse link because they are expressed andoperated on in terms of units of actual clock periods rather thannumbers of bits transmitted or received.

Typically, the largest possible Reverse Rate Divisor is half the numberof bits that can be sent in the measurement window of the Round TripDelay Measurement Packet using a Type-1 interface, or for this example:

$\frac{( {512\mspace{14mu}{{bytes} \cdot 8}\mspace{14mu}{bits}\text{/}{byte}} )}{2} = 2048$

An advanced reverse data sampling method can also be employed as analternative that allows the reverse bit time to be smaller than theround-trip delay. For this technique a host not only measures theround-trip delay, but can also determine the phase of the response fromthe client with respect to an ‘ideal’ bit boundary of a client and linkwith zero delay. By knowing the phase of the client device response, ahost can determine a relatively safe time to sample the reverse databits from the client. The round-trip delay measurement indicates to ahost the location of the first bit of reverse data with respect to thebeginning of the Reverse Data Packets field.

One embodiment of an example of advanced reverse data sampling isillustrate in graphical form in FIG. 52B. An ideal reverse data signalwith zero round-trip delay is shown as a dotted-line waveform. Theactual round-trip delay, between 3.5 and 4 MDDI_Stb cycles, can beobserved as the difference in delay between solid waveform and theideal. This is the same delay that would be measured using the RoundTrip Delay Measurement Packet, and would be a measured round-trip delayvalue equal to 7 forward-link bit times. In this embodiment, reversedata bits are 2 MDDI_Stb pulses long, which is 4 forward-link bit times,which corresponds to a reverse rate divisor equal to 2. For advancedreverse data sampling it is convenient to use a pre-selected reverserate divisor of 2 instead of computing it as described elsewhere. Thisappears to be a substantially optimum choice for advanced reverse datasampling because the ideal sampling point can easily be determined usingthe conventional measurements described above.

The ideal sampling point for reverse data can be easily computed bytaking the reminder of the total round-trip delay divided by the numberof forward link clocks per reverse bit, or round-trip delay moduloforward link clocks per reverse bit. Then subtract either 1 or 2 to getto a safe point away from the data transition. In this example, 7 mod4=3, then 3−1=2, or 3−2=1. The safe sampling point is either 1 or 2forward link bit times from the edge of the “ideal” bit boundary forzero round-trip delay. The figure shows the sampling point at 2 forwardlink bit times from the ideal bit boundary, as indicated by the seriesof vertical arrows at the bottom of the timing diagram. The firstsampling point is the first ideal bit boundary after the measuredround-trip delay, plus the offset for safe sampling. In this example,the round trip delay measurement is 7, so the next ideal bit boundary isat the 8^(th) bit time, then add either 1 or 2 for the safe samplingpoint, so the first bit shall be sampled at either 9 or 10 forward linkbit times after the beginning of the Reverse Data Packets Field.

XI. Turn-Around and Guard Times

The Turn-Around 1 field in the Reverse Link Encapsulation Packet allowstime for the host drivers to disable and the client drivers to enablesimultaneously. The Guard Time 1 field in the Round Trip DelayMeasurement Packet allows overlap of the host and client, so the clientdrivers can enable before the host interface drivers are disabled. TheTurn Around 2 field in the Reverse Link Encapsulation Packet allows datain the previous field from the client to be fully transmitted before thehost drivers are enabled. The Guard Time 2 field provides a time valueor period which allows the client and host drivers to drivesimultaneously at a logic-zero level. The Guard Time 1 and Guard Time 2fields are generally filled with pre-set or pre-selected values forlengths that are not meant to be adjusted. Depending on the interfacehardware being used, these values may be developed using empirical dataand adjusted in some instances to improve operation.

Turn-Around 1

Several factors contribute to a determination of the length ofTurn-Around 1 and these are the forward link data rate, the maximumdisable time of the MDDI_Data drivers in the host, and the enable timeof the client driver which is which is generally the same as the hostdisable time. The length of the Turn-Around 1 field is selected to be24·t_(BIT). (Table XI) The length in the number of forward link bytes ofthe Turn-Around 1 field is determined using the Interface Type Factor,and is computed using the relationship:

${Length}_{{TurnAround}\mspace{14mu} 1} = {{\frac{24}{8\mspace{14mu}{bits}\text{/}{byte}} \cdot {InterfaceTypeFactor}_{FWD}} = {3 \cdot {InterfaceTypeFactor}_{FWD}}}$where the Interface Type Factor is 1 for Type 1, 2 for Type 2, 4 forType 3, and 8 for Type-4.

Turn-Around 2

The factors that determine the length of time generally used for TurnAround 2 are, the round-trip delay of the communication link, themaximum disable time of the MDDI_Data drivers in the client, and theenable time of the host driver which is specified to be the same as theclient driver disable time. The maximum host driver enable time andclient driver disable time is specified elsewhere. The round-trip delayis measured in units of t_(BIT). The minimum length specified in thenumber of forward link bytes of the Turn-Around 2 field is computedaccording to the relationship:

${Length}_{{TurnAround}\mspace{14mu} 2} \geq {{RoundUpToNextInteger}{\quad( {\frac{{RoundTripDelay} + 24}{8\mspace{14mu}{bits}\text{/}{byte}} \cdot {InterfaceTypeFactor}_{FWD}} )}}$

For example, a Type 3 forward link with a round-trip delay of 10 forwardlink clocks typically uses a Turn Around 2 delay on the order of:

${{Length}_{{TurnAround}\mspace{14mu} 2} \geq {{RoundUpToNextInteger}( {\frac{11 + 24}{8} \cdot 4} )}} = {18\mspace{14mu}{bytes}}$XII. Alternative Reverse Link Timing

While the use of timing and guard bands discussed above work to achievea high data transfer rate interface, the inventors have discovered atechnique to allow for reverse bit lengths that are shorter than theround trip time, by changing the reverse timing discovery.

As presented above, the previous approach to the timing of the reverselink is configured such that the number of clock cycles is counted fromthe last bit of the Guard Time 1 of a reverse timing packet until thefirst bit is sampled on the rising edge of an IO clock. That is theclock signal(s) used to time the inputs and outputs for the MDDI. Thecalculation for the reverse rate divisor is then given by:

${{reverse\_ rate}{\_ divisor}} = {{RoundUpToNextInteger}( \frac{{{round\_ trip}{\_ delay}} + 1}{2} )}$

This provides a bit width equal to the round trip delay which results ina very reliable reverse link. However, the reverse link has been shownto be capable of running faster, or at a higher data transfer rate,which the inventors want to take advantage of. A new inventive techniqueallows utilizing additional capabilities of the interface to reachhigher speeds.

This is accomplished by having the host count the number of clock cyclesuntil a one is sampled, but with the host sampling the data line on boththe rising and falling edges during the reverse timing packet. Thisallows the host to pick the most useful or even optimal sampling pointwithin the reverse bit to ensure that the bit is stable. That is, tofind the most useful or optimal rising edge to sample data on forreverse traffic reverse encapsulation packets. The optimal samplingpoint depends on both the reverse link divisor and whether the first onewas detected on a rising edge or a falling edge. The new timing methodallows the host to just look for the first edge of the 0xFF 0xFF 0x00pattern sent by the client for reverse link timing to determine where tosample in a reverse encapsulation packet.

Examples of the arriving reverse bit and how that bit would look forvarious reverse rate divisors, is illustrated in FIG. 64, along with anumber of clock cycles that have occurred since the last bit of GuardTime 1. In FIG. 64, one can see that if the first edge occurs between arising and falling edge (labeled as rise/fall), the optimal samplingpoint for a reverse rate divisor of one, the optimal sample point is aclock cycle edge labeled ‘b’, as that is the only rising edge occurringwithin the period of the reverse bit. For a reverse rate divisor of two,the optimal sampling point is probably still clock cycle leading edge‘b’ as cycle edge ‘c’ is closer to a bit edge than ‘b’. For a reverserate divisor of four, the optimal sampling point is probably clock cycleedge ‘d’, as it is closer to the back edge of the reverse bit where thevalue has probably stabilized.

Returning to FIG. 64, if, however, the first edge occurs between afalling and rising edge (labeled as fall/rise), the optimal samplingpoint for a reverse rate divisor of one is sampling point clock cycleedge ‘a’, as that is the only rising edge within the reverse bit timeperiod. For a reverse rate divisor of two, the optimal sampling point isedge ‘b’, and for a reverse rate divisor of four the optimal samplingpoint is edge ‘c’.

One can see that as the reverse rate divisors get larger and larger, theoptimal sampling point becomes easier to ascertain or select, as itshould be the rising edge that is closest to the middle.

The host can use this technique to find the number of rising clock edgesbefore the rising data edge of the timing packet data is observed on thedata line. It can then decide, based on whether the edge occurs betweena rising and falling edge or between a falling and rising edge, and whatthe reverse rate divisor is, how many additional clock cycles to add toa number counter, to reasonably ensure that the bit is always sampled asclose to the middle as possible.

Once the host has selected or determined the number of clock cycles, itcan “explore” various reverse rate divisors with the client to determineif a particular reverse rate divisor will work. The host (and client)can start with a divisor of one and check the CRC of the reverse statuspacket received from the client to determine if this reverse ratefunctions appropriately to transfer data. If the CRC is corrupt, thereis probably a sampling error, and the host can increase the reverse ratedivisor and try to request a status packet again. If the secondrequested packet is corrupt, the divisor can be increased again and therequest made again. If this packet is decoded correctly, this reverserate divisor can be used for all future reverse packets.

This method is effective and useful because the reverse timing shouldnot change from the initial round trip timing estimate. If the forwardlink is stable, the client should continue to decode forward linkpackets even if there are reverse link failures. Of course, it is stillthe responsibility of the host to set a reverse link divisor for thelink, since this method does not guarantee a perfect reverse link. Inaddition, the divisor will depend primarily on the quality of the clockthat is used to generate an IO clock. If that clock has a significantamount of jitter, there is a greater possibility of a sampling error.This error probability increases with the amount of clock cycles in theround trip delay.

This implementation appears to work best for Type 1 reverse data, butmay present problems for Type 2 through Type 4 reverse data due to theskew between data lines potentially being too great to run the link atthe rate that works best for just one data pair. However, the data rateprobably does not need to be reduced to the previous method even withType 2 through Type 4 for operation. This method may also work best ifduplicated on each data line to select the ideal or an optimal clocksample location. If they are at the same sample time for each data pair,this method would continue to work. If they are at different sampleperiods, two different approaches may be used. The first is to select andesired or more optimized sample location for each data point, even ifit is not the same for each data pair. The host can then reconstruct thedata stream after sampling all of the bits from the set of data pairs:two bits for Type 2, four bits for Type 3, and eight bits for Type 4.The other option is for the host to increase the reverse rate divisorsuch that the data bits for every data pair can be sampled at the sameclock edge.

XIII. Effects of Link Delay and Skew

Delay skew on the forward link between the MDDI_Data pairs and MDDI_Stbcan limit the maximum possible data rate unless delay skew compensationis used. The differences in delay that cause timing skew are due to thecontroller logic, the line drivers and receivers, and the cable andconnectors as outlined below.

A. Link Timing Analysis Limited by Skew (MDDI Type-1)

1. Delay and Skew Example of a Type 1 Link

A typical interface circuit similar to that shown in FIG. 41, is shownin FIG. 57 for accommodating a Type 1 interface link. In FIG. 57,exemplary or typical values for propagation delay and skew are shown foreach of several processing or interface stages of an MDDI Type 1 forwardlink. Skew in the delay between MDDI_Stb and MDDI_Data0 causes theduty-cycle of the output clock to be distorted. Data at the D input ofthe receiver flip-flop (RXFF) stage using flip-flops 5728, 5732, changesslightly after the clock edge so that it can be sampled reliably. Thefigure shows two cascaded delay lines 5732 a and 5732 b being used tosolve two different problems with creating this timing relationship. Inthe actual implementation these may be combined into a single delayelement.

Data, Stb, and Clock Recovery Timing on a Type 1 Link for exemplarysignal processing through the interface are illustrated in FIG. 58.

The total delay skew that is significant generally arises or comes fromthe sum of the skew in the following stages: transmitter flip-flop(TXFF) with flip-flops 5704, 5706; transmitter driver (TXDRVR) withdrivers 5708, 5710; the CABLE 5702; receiver line receiver (RXRCVR) withreceivers 5722, 5724; and receiver XOR logic (RXXOR). Delay1 5732 ashould match or exceed the delay of the XOR gate 5736 in the RXXOR stagewhich is determined by the relationship:t _(PD-min(Delay1)) ≧t _(PD-max(XOR))

It is desirable to meet this requirement so that the D input of receiverflip-flop 5728, 5732 does not change before its clock input. This isvalid if the hold-time of RXFF is zero.

The purpose or function of Delay2 is to compensate for the hold-time ofthe RXFF flip-flop according to the relationship:t _(PD-min(Delay2)) =t _(H(RXFF))

In many systems this will be zero because the hold time is zero, and ofcourse in that case the maximum delay of Delay2 can also be zero.

The worst-case contribution to skew in the receiver XOR stage is in thedata-late/strobe-early case where Delay1 is at a maximum value and theclock output from the XOR gate comes as early as possible according tothe relationship:t _(SKEW-max(RXXOR)) =t _(PD-max(Delay1)) −t _(PD-min(XOR))

In this situation, the data may change between two bit periods, n andn+1, very close to the time where bit n+1 is clocked into the receiverflip-flop.

The maximum data rate (minimum bit period) of an MDDI Type 1 link is afunction of the maximum skew encountered through all the drivers, cable,and receivers in the MDDI link plus the total data setup into the RXFFstage. The total delay skew in the link up to the output of the RXRCVRstage can be expressed as:t _(SKEW-max(LINK)) =t _(SKEW-max(TXFF)) +t _(SKEW-max(TXDRVR)) +t_(SKEW-max(CABLE)) +t _(SKEW-max(RXRCVR))with the “cable” representing a variety of conductors orinterconnections or wires and corresponding delay, and the minimum bitperiod is given by:t _(BIT-min) =t _(SKEW-max(LINK))+2·t _(B-TP4) +t _(Asymmetry) +t_(SKEW-max(RXXOR)) +t _(jitter-host) +t _(PD-max(Delay2)) +t _(SU(RXFF))

In the example shown in FIG. 57 for external mode,t_(SKEW-max(LINK))=1000 psec and the minimum bit period can be expressedas:t _(BIT-min)=1000+2·125+625+125+200+0+100=2300 psec,or stated as approximately 434 Mbps. In the example shown in FIG. 57 forinternal mode, t_(SKEW-max(LINK))=500 psec and the minimum bit periodcan be expressed as:t_(BIT-min)=500+2·125+625+125+200+0+100=1800 psec,or stated as approximately 555 Mbps.

B. Link Timing Analysis for MDDI Type 2, 3, and 4

A typical interface circuit similar to that shown in FIGS. 41 and 57, isshown in FIG. 59 for accommodating Type 2, 3, and 4 interface links.Additional elements are used in the TXFF (5904), TXDRVR (5908), RXRCVCR(5922), and RXFF (5932, 5928, 5930) stages to accommodate the additionalsignal processing. In FIG. 59, exemplary or typical values forpropagation delay and skew are shown for each of several processing orinterface stages of an MDDI Type 2 forward link. In addition to skew inthe delay between MDDI_Stb and MDDI_Data0 affecting the duty-cycle ofthe output clock, there is also skew between both of these two signalsand the other MDDI_Data signals. Data at the D input of the receiverflip-flop B (RXFFB) stage consisting of flip-flops 5928 and 5930, ischanged slightly after the clock edge so it can be sampled reliably. IfMDDI_Data1 arrives earlier than MDDI_Stb or MDDI_Data0 then MDDI_Data1should be delayed to be sampled by at least the amount of the delayskew. To accomplish this, data is delayed using the Delay3 delay line.If MDDI_Data1 arrives later than MDDI_Stb and MDDI_Data0 and it is alsodelayed by Delay3 then the point where MDDI_Data1 changes is movedcloser to the next clock edge. This process determines an upper limit ofthe data rate of an MDDI Type 2, 3, or 4 link. Some exemplary differentpossibilities for the timing or skew relationship of two data signalsand MDDI_Stb with respect to each other is illustrated in FIGS. 60A,60B, and 60C.

In order to sample data reliably in RXFFB when MDDI_DataX arrives asearly as possible, Delay3 is set according to the relationship:t _(PD-min(Delay3)) ≧t _(SKEW-max(LINK)) +t _(H(RXFFB)) +t_(PD-max(XOR))

The maximum link speed is determined by the minimum allowable bitperiod. This is most affected when MDDI_DataX arrives as late aspossible. In that case, the minimum allowable cycle time is given by:t _(BIT-min) =t _(SKEW-max(LINK)) +t _(PD-max(Delay)3)+t _(SU(RXFFB)) −t_(PD-min(XOR))

The upper bound of link speed is then:t _(PD-max(Delay3)) =t _(PD-min(Delay3))and given that assumption:t _(BIT-min(lower-bound))=2·t _(SKEW-max(LINK)) +t _(PD-max(XOR)) +t_(SU(RXFFB)) +t _(H(RXFFB))

In the example given above, the lower bound of the minimum bit period isgiven by the relationship:t _(BIT-min(lower-bound))=2·(1000+2·125+625+200)+1500+100+0=5750 psec,which is approximately 174 Mbps.

This is much slower than the maximum data rate that can be used with aType 1 link. The automatic delay skew compensation capability of MDDIsignificantly reduces the affect that delay skew has on the maximum linkrate factor is just on-the-edge of valid data setup. The calibrated skewbetween MDDI_Data0 and MDDI_Stb is:t _(SKEW-max(Calibrated))=2·t _(TAP-SPACING-max),and the minimum bit period is:t _(BIT-min-Calibrated) =t _(SKEW-max(Calibrated))+2·t _(B-TP4) +t_(Asymmetry) +t _(jitter-host) +t _(SKEW-max(RXAND+RXXOR)) +t_(SU(RXFF))

Where “TB” or t_(B) represents signal jitter from a bit boundary tominimum output level. Asymmetry simply refers to the asymmetrical natureof internal delay through or of the differential receivers. “TP4” isassociated with or is effectively defined for electricalcharacterization and testing purposes as the connection or interface(pins of the MDDI controller device in the client) for the differentialline drivers and receivers for the client. It represents a convenient orpredetermined point from which signal delay is measured andcharacterized for the link throughout the rest of a system. In oneembodiment, a maximum value of the parameter t_(B) at TP4 is defined bythe relationship t_(Differential-Skew-TP4-DRVR-EXT)=0.3·t_(BIT) for theexternal mode and t_(Differential-Skew-TP4-DRVR-INT)=0.6·t_(BIT) for theinternal mode for the client transmitters; andt_(B-TP4-RCVR-EXT)=0.051·t_(BIT)+175 ps for the external mode for theclient receivers.

The label TP4 being simply useful in numbering various test points (TP)in the interface and links. In one embodiment, this test point locationis defined to be the same for both internal and external modes. There isa corresponding “TP0” test point for, or associated with, the connectionor interface pins of the MDDI controller device in the host thatcontains the differential line drivers and receivers. In thisembodiment, a maximum value of the parameter T_(B) at TP0 is defined bythe relationship t_(B-TP0-RCVR-INT)=0.051·t_(BIT)+50 ps, for theinternal mode, and t_(B-TP0-RCVR-EXT)=0.051·t_(BIT)+175 ps for theexternal mode for the host receivers; and t_(B-TP0)=0.102·t_(BIT) forthe host transmitters.

In the example shown in FIG. 59, t_(SKEW-max(Data0-Stb-Calibrated))=300psec and the minimum bit period:t _(BIT-min-Calibrated)=300+2·125+625+200+175+100=1650 psec,approximately 606 Mbps.

In order to sample data reliably in RXFFB when MDDI_Data1 arrives asearly as possible, the associated programmable delay is adjusted to theoptimal setting with an accuracy of one tap, and an additional tap delayis added for safety. The maximum link speed is determined by the minimumallowable bit period. This is most affected when MDDI_Data1 arrives aslate as possible. In that case the minimum allowable cycle time is:t _(BIT-min-Data1-Calibrated)=2·t _(TAP-Spacing-max)+2·t _(TA-TP4),where “TA” or t_(A) represents signal jitter from a bit boundary tocenter crossing.

In the example given in FIG. 59, the lower bound of the minimum bitperiod based on sampling MDDI_Data1 is:t _(BIT-min-Data1-Calibrated)=2·150+2·125=550 psec

In one embodiment, a typical total delay time for delay skew, delayasymmetry, and Clock Jitter in the host transmitter for Internal Modewould be defined as:t _(Asymmerty-TXFF) +t _(Asymmetry-TXDRVR) +t _(Skew-TXFF) +t_(Skew-TXDRVR) +t _(jitter-host)=0.467·(t _(BlT)−150 ps),and for the external mode as:t _(Asymmerty-TXFF) +t _(Asymmetry-TXDRVR) +t _(Skew-TXFF) +t_(Skew-TXDRVR) +t _(jitter-host)=0.TBD·(t _(BIT)−150 TBDps)while a typical total delay time for delay skew, delay asymmetry, andsetup time in the client device (t_(B-TP4)) for internal mode is:t _(Asymmerty-RXRCVR) +t _(Asymmetry-RXXOR) +t _(Skew-RXRCVR) +t_(Skew-RXXOR) +t _(setup-RXFF)=0.307·(t _(BIT)−150 ps),and for the external mode:t _(Asymmerty-RXRCVR) +t _(Asymmetry-RXXOR) +t _(Skew-RXRCVR) +t_(Skew-RXXOR) +t _(setup-RXFF)=0.TBD·(t _(BIT) −TBDps),where the term TBD is a flexible place keeping label for future to bedetermined values which will depend on a variety of well understoodcharacteristics and operational requirements for the external modeconnections.XIV. Physical Layer Interconnection Description

Physical connections useful for implementing an interface according tothe present invention can be realized using commercially available partssuch as part number 3260-8S2(01) as manufactured by Hirose ElectricCompany Ltd. on the host side, and part number 3240-8P-C as manufacturedby Hirose Electric Company Ltd. on the client device side. An exemplaryinterface pin assignment or “pinout” for such connectors used with aType-1/Type 2 interfaces is listed in Table XIII, and illustrated inFIG. 61.

TABLE XIII Pin Signal Name Number Signal Name Pin Number MDDI_Pwr 1MDDI_Gnd 11 MDDI_Stb+ 2 MDDI_Stb− 12 MDDI_Data0+ 4 MDDI_Data0− 14MDDI_Data1+ 6 MDDI_Data1− 16 MDDI_Data2+ 8 MDDI_Data2− 18 MDDI_Data3+ 10MDDI_Data3− 20 MDDI_Data4+ 9 MDDI_Data4− 19 MDDI_Data5+ 7 MDDI_Data5− 17MDDI_Data6+ 5 MDDI_Data6− 15 MDDI_Data7+ 3 MDDI_Data7− 13 Shield

The shield is connected to the HOST_Gnd in the host interface, and ashield drain wire in the cable is connected to the shield of the clientconnector. However, the shield and drain wire are not connected to thecircuit ground inside of a client.

Interconnection elements or devices are chosen or designed in order tobe small enough for use with mobile communication and computing devices,such as PDAs and wireless telephones, or portable game devices, withoutbeing obtrusive or unaesthetic in comparison to relative device size.Any connectors and cabling should be durable enough for use in thetypical consumer environment and allow for small size, especially forthe cabling, and relatively low cost. The transfer elements shouldaccommodate data and strobe signals that are differential NRZ datahaving a transfer rate up to around 450 Mbps for Type 1 and Type 2 andup to 3.6 Gbps for the 8-bit parallel Type 4 version.

For internal mode applications there are either no connectors in thesame sense for the conductors being used or such connection elementstend to be very miniaturized. One example is zero insertion force“sockets” for receiving integrated circuits or elements housing eitherthe host or client device. Another example is where the host and clientreside on printed circuit boards with various interconnectingconductors, and have “pins” or contacts extending from housings whichare soldered to contacts on the conductors for interconnection ofintegrated circuits.

XV. Operation

A summary of the general steps undertaken in processing data and packetsduring operation of an interface using embodiments of the invention isshown in FIGS. 54A and 54B, along with an overview of the interfaceapparatus processing the packets in FIG. 55. In these figures, theprocess starts in a step 5402 with a determination as to whether or notthe client and host are connected using a communication path, here acable. This can occur through the use of periodic polling by the host,using software or hardware that detects the presence of connectors orcables or signals at the inputs to the host (such as is seen for USBinterfaces), or other known techniques. If there is no client connectedto the host, then it can simply enter a wait state of some predeterminedlength, depending upon the application, go into a hibernation mode, orbe inactivated to await future use which might require a user to takeaction to reactivate the host. For example, when a host resides on acomputer type device, a user might have to click on a screen icon orrequest a program that activates the host processing to look for theclient. Again, simple plug in of a USB type connection could activatehost processing, depending on the capabilities and configuration of thehost or resident host software.

Once a client is connected to the host, or visa versa, or detected asbeing present, either the client or the host sends appropriate packetsrequesting service in steps 5404 and 5406. The client could send eitherClient Service Request or Status packets in step 5404. It is noted thatthe link, as discussed above, could have been previously shut down or bein hibernation mode so this may not be a complete initialization of thecommunication link that follows. Once the communication link issynchronized and the host is trying to communicate with the client, theclient also provides a Client Capabilities packet to the host, as instep 5408. The host can now begin to determine the type of support,including transfer rates, the client can accommodate.

Generally, the host and client also negotiate the type (rate/speed) ofservice mode to be used, for example Type 1, Type 2, and so forth, in astep 5410. Once the service type is established the host can begin totransfer information. In addition, the host may use Round Trip DelayMeasurement Packets to optimize the timing of the communication links inparallel with other signal processing, as shown in step 5411.

As stated earlier, all transfers begin with a Sub-Frame Header Packet,shown being transferred in step 5412, followed by the type of data, herevideo and audio stream packets, and filler packets, shown beingtransferred in step 5414. The audio and video data will have beenpreviously prepared or mapped into packets, and filler packets areinserted as needed or desired to fill out a required number of bits forthe media frames. The host can send packets such as the Forward AudioChannel Enable Packets to activate sound devices. In addition, the hostcan transfer commands and information using other packet types discussedabove, here shown as the transfer of Color Map, Bit Block Transfer orother packets in step 5416. Furthermore, the host and client canexchange data relating to a keyboard or pointing devices using theappropriate packets.

During operation, one of several different events can occur which leadto the host or client desiring a different data rate or type ofinterface mode. For example, a computer or other device communicatingdata could encounter loading conditions in processing data that causes aslow down in the preparation or presentation of packets. A client devicereceiving the data could change from a dedicated AC power source to amore limited battery power source, and either not be able to transfer indata as quickly, process commands as readily, or not be able to use thesame degree of resolution or color depth under the more limited powersettings. Alternatively, a restrictive condition could be abated ordisappear allowing either device to transfer data at higher rates. Thisbeing more desirable, a request can be made to change to a highertransfer rate mode.

If these or other types of known conditions occur or change, either thehost or client may detect them and try to renegotiate the interfacemode. This is shown in step 5420, where the host sends Interface TypeHandoff Request Packets to the client requesting a handoff to anothermode, the client sends Interface Type Acknowledge Packets confirming achange is sought, and the host sends Perform Type Handoff Packets tomake the change to the specified mode.

Although, not requiring a particular order of processing, the client andhost can also exchange packets relating to data intended for or receivedfrom pointing devices, keyboards, or other user type input devicesassociated primarily with the client, although such elements may also bepresent on the host side. These packets are typically processed using ageneral processor type element and not the state machine (5502). Inaddition, some of the commands discussed above will also be processed bythe general processor. (5504, 5508)

After data and commands have been exchanged between the host and client,at some point a decision is made as to whether or not additional data isto be transferred or the host or client is going to cease servicing thetransfer. This is shown in step 5422. If the link is to enter either ahibernation state or be shut down completely, the host sends a LinkShutdown packet to the client, and both sides terminate the transfer ofdata.

The packets being transferred in the above operations processing will betransferred using the drivers and receivers previously discussed inrelation to the host and client controllers. These line drivers andother logic elements are connected to the state machine and generalprocessors discussed above, as illustrated in the overview of FIG. 55.In FIG. 55, a state machine 5502 and general processors 5504 and 5508may further be connected to other elements not shown such as a dedicatedUSB interface, memory elements, or other components residing outside ofthe link controller with which they interact, including, but not limitedto, the data source, and video control chips for view display devices.

The processors, and state machine provide control over the enabling anddisabling of the drivers as discussed above in relation to guard times,and so forth, to assure efficient establishment or termination ofcommunication link, and transfer of packets.

XVI. Display Frame Buffers

Video data buffering requirements are different for moving video imagescompared to computer graphics. Pixel data is most often stored in alocal frame buffer in the client so the image on the client can berefreshed locally.

When full-motion video is being displayed (nearly every pixel in thedisplay changes each Media Frame) it is usually preferred to store theincoming pixel data in one frame buffer while the image on the displayis being refreshed from a second frame buffer. More than two displaybuffers may be used to eliminate visible artifacts as described below.When an entire image has been received in one frame buffer then theroles of the buffers can be swapped, and the newly received image isthen used to refresh the display and the other buffer is filled with thenext frame of the image. This concept is illustrated in FIG. 88A, wherepixel data is written to the offline image buffer by setting the DisplayUpdate bits to “01.”

In other applications the host needs to update only a small portion ofthe image without having to repaint the entire image. In this situationit is desired to write the new pixels directly to the buffer being usedto refresh the display, as illustrated in detail FIG. 88B.

In applications that have a fixed image with a small video window it iseasiest to write the fixed image to both buffers (display update bitsequal to “11”) as shown in FIG. 88C, and subsequently write the pixelsof the moving image to the offline buffer by setting the display updatebits to “01.”

The following rules describe the useful manipulation of buffer pointerswhile simultaneously writing new information to the client andrefreshing the display. Three buffer pointers exist: current_fill pointsto the buffer currently being filled from data over the MDDI link.Just_filled points to the buffer that was most recently filled.being_displayed points to the buffer currently being used to refresh thedisplay. All three buffer pointers may contain values from 0 to N−1where N is the number of display buffers, and N≧2. Arithmetic on bufferpointers is mod N, e.g. when N=3 and current_fill=2, incrementingcurrent_fill causes current_fill to be set to 0. In the simple casewhere N=2, just_filled is always the complement of current_fill. Onevery MDDI Media Frame boundary (Sub-frame Header Packet with theSub-frame Count field equal so zero) perform the following operations inthe order specified: set just_filled equal to current_fill, and setcurrent_fill equal to current_fill+1.

MDDI Video Stream Packets update the buffers according to the structureor methodology of: when Display Update Bits equal to ‘01’, pixel data iswritten to the buffer specified by current_fill; when Display UpdateBits equal to ‘00’, pixel data is written to the buffer specified byjust_filled; and when Display Update Bits equal to “11,” pixel data iswritten to all buffers. The display is refreshed from the bufferspecified by the being_displayed pointer. After the display refreshesthe last pixel in one frame refresh epoch and before it begins torefresh the first pixel in the next frame refresh epoch the displayupdate process performs the operation of setting being_refreshed equalto just_filled.

The Packets with a Pixel Data Attribute field contain a pair of DisplayUpdate Bits that specify the frame buffer where the pixel data is to bewritten. The Client Capability Packet has three additional bits thatindicate which combinations of the Display Update Bits are supported inthe client In many cases, computer-generated images need to beincrementally updated based on user input or derived from informationreceived from a computer network. Display Update Bit combinations “00”and “11” support this mode of operation by causing the pixel data to bewritten to the frame buffer being displayed or to both frame buffers.

When accommodating video images, FIG. 89 illustrates how video imagesare displayed using a pair of frame buffers when video data istransmitted over the MDDI link with the Display Update Bits equal to“01.” After a media-frame boundary is detected on the MDDI link, thedisplay refresh process will begin refreshing from the next frame bufferwhen the refresh process for the frame currently being refreshed iscompleted.

An important assumption related to FIG. 89 is that the image is receivedfrom the host as a continuous stream of pixels that are transmitted inthe same order that the client uses to read the pixels from the framebuffer to refresh the display (usually upper-left, reading row by row,to the bottom-right corner of the screen. This is an important detail inthe cases where the Display Refresh and Image Transfer operationsreference the same frame buffer.

It is necessary for the display refresh frame rate to be greater thanthe image transfer frame rate to avoid displaying partial images. FIG.90 shows how image fragmentation can occur with a slow display refreshrate that is the display refresh is slower than the image transfer.

In an image that contains a combination of computer graphic images andmoving video pictures the video pixel data might occupy a small portionof a media-frame. This could be significant in situations where thedisplay refresh operation and the image transfer reference the sameframe buffer. These situations are shown by a cross-hatched shading inFIG. 91, where the pixels read from the buffer to refresh the displaymight be the pixels written to the buffer two frames ago, or they maycorrespond to the frame immediately being written to the same framebuffer.

The use of three frame buffers in the client will resolve the problem ofthe small window of contention for access to a frame buffer as shown inFIG. 92.

However, there is still a problem if the display refresh rate is lessthan the media-frame rate over the MDDI link as shown in FIG. 93.

The use of a single buffer for moving video images is somewhatproblematic as shown FIG. 94. With the display refresh faster than theimage transfer into the buffer, the image being refreshed sometimes willshow the upper portion of the frame being written and the lower portionof the image will be the frame previously transferred. With the displayrefresh faster than the image transfer (the preferred mode of operation)there will be more frequent instances of frames showing a similar splitimage.

XVII. Delay Value Table

The Packet Processing Delay Parameters Packet uses a table-lookupfunction to calculate the predicted delay to process certain commands inthe client. Values in the table increase in a logarithmic fashion toprovide a very wide dynamic range of delay values. An exemplary table ofdelay values useful for implementing embodiments of the invention isfound in Table XX below, with corresponding index values versus delayvalues.

TABLE XX 0 -no_delay 1 - 46 ps 2 - 51 ps 3 - 56 ps 4 - 62 ps 5 - 68 ps6 - 75 ps 7 - 83 ps 8 - 91 ps 9 - 100 ps 10 - 110 ps 11 - 120 ps 12 -130 ps 13 - 150 ps 14 - 160 ps 15 - 180 ps 16 - 200 ps 17 - 220 ps 18 -240 ps 19 - 260 ps 20 - 290 ps 21 - 320 ps 22 - 350 ps 23 - 380 ps 24 -420 ps 25 - 460 ps 26 - 510 ps 27 - 560 ps 28 - 620 ps 29 - 680 ps 30 -750 ps 31 - 830 ps 32 - 910 ps 33 - 1.0 ns 34 - 1.1 ns 35 - 1.2 ns 36 -1.3 ns 37 - 1.5 ns 38 - 1.6 ns 39 - 1.8 ns 40 - 2.0 ns 41 - 2.2 ns 42 -2.4 ns 43 - 2.6 ns 44 - 2.9 ns 45 - 3.2 ns 46 - 3.5 ns 47 - 3.8 ns 48 -4.2 ns 49 - 4.6 ns 50 - 5.1 ns 51 - 5.6 ns 52 - 6.2 ns 53 - 6.8 ns 54 -7.5 ns 55 - 8.3 ns 56 - 9.1 ns 57 - 10 ns 58 - 11 ns 59 - 12 ns 60 - 13ns 61 - 15 ns 62 - 16 ns 63 - 18 ns 64 - 20 ns 65 - 22 ns 66 - 24 ns67 - 26 ns 68 - 29 ns 69 - 32 ns 70 - 35 ns 71 - 38 ns 72 - 42 ns 73 -46 ns 74 - 51 ns 75 - 56 ns 76 - 62 ns 77 - 68 ns 78 - 75 ns 79 - 83 ns80 - 91 ns 81 - 100 ns 82 - 110 ns 83 - 120 ns 84 - 130 ns 85 - 150 ns86 - 160 ns 87 - 180 ns 88 - 200 ns 89 - 220 ns 90 - 240 ns 91 - 260 ns92 - 290 ns 93 - 320 ns 94 - 350 ns 95 - 380 ns 96 - 420 ns 97 - 460 ns98 - 510 ns 99 - 560 ns 100 - 620 ns 101 - 680 ns 102 - 750 ns 103 - 830ns 104 - 910 ns 105 - 1.0 us 106 - 1.1 us 107 - 1.2 us 108 - 1.3 us109 - 1.5 us 110 - 1.6 us 111 - 1.8 us 112 - 2.0 us 113 - 2.2 us 114 -2.4 us 115 - 2.6 us 116 - 2.9 us 117 - 3.2 us 118 - 3.5 us 119 - 3.8 us120 - 4.2 us 121 - 4.6 us 122 - 5.1 us 123 - 5.6 us 124 - 6.2 us 125 -6.8 us 126 - 7.5 us 127 - 8.3 us 128 - 9.1 us 129 - 10 us 130 - 11 us131 - 12 us 132 - 13 us 133 - 15 us 134 - 16 us 135 - 18 us 136 - 20 us137 - 22 us 138 - 24 us 139 - 26 us 140 - 29 us 141 - 32 us 142 - 35 us143 - 38 us 144 - 42 us 145 - 46 us 146 - 51 us 147 - 56 us 148 - 62 us149 - 68 us 150 - 75 us 151 - 83 us 152 - 91 us 153 - 100 us 154 - 110us 155 - 120 us 156 - 130 us 157 - 150 us 158 - 160 us 159 - 180 us160 - 200 us 161 - 220 us 162 - 240 us 163 - 260 us 164 - 290 us 165 -320 us 166 - 350 us 167 - 380 us 168 - 420 us 169 - 460 us 170 - 510 us171 - 560 us 172 - 620 us 173 - 680 us 174 - 750 us 175 - 830 us 176 -910 us 177 - 1.0 ms 178 - 1.1 ms 179 - 1.2 ms 180 - 1.3 ms 181 - 1.5 ms182 - 1.6 ms 183 - 1.8 ms 184 - 2.0 ms 185 - 2.2 ms 186 - 2.4 ms 187 -2.6 ms 188 - 2.9 ms 189 - 3.2 ms 190 - 3.5 ms 191 - 3.8 ms 192 - 4.2 ms193 - 4.6 ms 194 - 5.1 ms 195 - 5.6 ms 196 - 6.2 ms 197 - 6.8 ms 198 -7.5 ms 199 - 8.3 ms 200 - 9.1 ms 201 - 10 ms 202 - 11 ms 203 - 12 ms204 - 13 ms 205 - 15 ms 206 - 16 ms 207 - 18 ms 208 - 20 ms 209 - 22 ms210 - 24 ms 211 - 26 ms 212 - 29 ms 213 - 32 ms 214 - 35 ms 215 - 38 ms216 - 42 ms 217 - 46 ms 218 - 51 ms 219 - 56 ms 220 - 62 ms 221 - 68 ms222 - 75 ms 223 - 83 ms 224 - 91 ms 225 - 100 ms 226 - 110 ms 227 - 120ms 228 - 130 ms 229 - 150 ms 230 - 160 ms 231 - 180 ms 232 - 200 ms233 - 220 ms 234 - 240 ms 235 - 260 ms 236 - 290 ms 237 - 320 ms 238 -350 ms 239 - 380 ms 240 - 420 ms 241 - 460 ms 242 - 510 ms 243 - 560 ms244 - 620 ms 245 - 680 ms 246 - 750 ms 247 - 830 ms 248 - 910 ms 249 -1.0 sec 250 - 1.1 sec 251 - 1.2 sec 252 - 1.3 sec 253 - 1.5 sec 254 -1.6 s 255 - indefinite

The delay is computed by performing a table lookup using the specifiedparameter as an index into the table. This means a delay is equal toPacketProcessingTable(index). For example: if one of the parameters fromthe Delay Parameters List Item is an 8-bit value equal to 134, then thedelay is equal to PacketProcessingTable(134) which is 16 μsec. The value255 indicates that the command completion time cannot be determined bycalculation, and that the host will check the Graphics Busy Flags in theClient Request and Status Packet or MCCS VCP Control Parameter B7h.

In some cases this delay is multiplied by the height, width, or numberof pixels in the destination image and added to other delays to computethe overall packet processing delay.

XVIII. Multiple Client Support

The current protocol version does not appear to directly supportmultiple client devices. However, most packets contain a reserved ClientID field that can be used to address specific client devices in a systemwith multiple clients. Currently, for many applications this client IDor these client IDs are set to be zero. The sub-frame header packet alsocontains a field to indicate whether or not the host supports a multipleclient system. Therefore, there is a manner in which multiple clientdevices would likely be connected and addressed in future applicationsof the MDDI or protocol to aid system designers to plan for futurecompatibility with multiple client hosts and clients.

In systems having multiple clients it is useful for clients to beconnected to the host using a daisy-chain of clients, or using hubs, asshown in FIG. 95, or using a combination of these techniques as shown inFIG. 96. It also may be useful for a host to display certain errormessages to manage the connected clients, such as an error message whenone or more clients desiring address 0 are connected, which should notbe the case for multi-client systems, as such displays expect to be orare set to operate as the only client.

XIX. Addendum

In addition to the formats, structures, and contents discussed above forthe various packets used to implement the architecture and protocol forembodiments of the invention, more detailed field contents or operationsare presented here for some of the packet types. These are presentedhere to further clarify their respective use or operations to enablethose skilled in the art to more readily understand and make use of theinvention for a variety of applications. Only a few of the fields notalready discussed are discussed further here. In addition, these fieldsare presented with exemplary definitions and values in relation to theembodiments presented above. However, such values are not to be taken aslimitations of the invention, but represent one or more embodimentsuseful for implementing the interface and protocol, and not allembodiments need be practiced together or at the same time. Other valuescan be used in other embodiments to achieve the desired presentation ofdata or data rate transfer results, as will be understood by thoseskilled in the art.

A. For Video Stream Packets

In one embodiment, the Pixel Data Attributes field (2 byte) has a seriesof bit values that are interpreted as follows. Bits 1 and 0 select howthe display pixel data is routed. For bit values of ‘11’ pixel data isdisplayed to or for both eyes, for bit values ‘10’, pixel data is routedonly to the left eye, and for bit values ‘01’, pixel data is routed onlyto the right eye, and for bit values of ‘00’ the pixel data is routed toan alternate display as may be specified by bits 8 through 11 discussedbelow. If the primary display in or being used or operated by a clientdoes not support stereo images or imaging in some form, then thesecommands cannot effectively be implanted to have an impact as desired bythe display. In this situation or configuration the client should routepixel data to a primary display regardless of the bit values or for anyof the bit combinations ‘01,’ ‘10,’ or ‘11,’ since the resultingcommands or control won't be implemented by the display. It isrecommended, but not required by the embodiments, that the value ‘11’ beused to address the primary display in those clients that do not supportstereo display capability.

Bit 2 indicates whether or not the Pixel Data is presented in aninterlace format, with a value of ‘0’ meaning the pixel data is in thestandard progressive format, and that the row number (pixel Ycoordinate) is incremented by 1 when advancing from one row to the next.When this bit has a value of ‘1’, the pixel data is in interlace format,and the row number is incremented by 2 when advancing from one row tothe next. Bit 3 indicates that the Pixel Data is in alternate pixelformat. This is similar to the standard interlace mode enabled by bit 2,but the interlacing is vertical instead of horizontal. When Bit 3 is ‘0’the Pixel Data is in the standard progressive format, and the columnnumber (pixel X coordinate) is incremented by 1 as each successive pixelis received. When Bit 3 is ‘1’ the Pixel Data is in alternate pixelformat, and the column number is incremented by 2 as each pixel isreceived.

Bit 4 indicates whether or not the Pixel data is related to a display ora camera, as where data is being transferred to or from an internaldisplay for a wireless phone or similar device or even a portablecomputer, or such other devices as discussed above, or the data is beingtransferred to or from a camera built into or directly coupled to thedevice. When Bit 4 is ‘0’ the Pixel data is being transferred to or froma display frame buffer. When Bit 4 is ‘1’ Pixel data is beingtransferred to or from a camera or video device of some type, suchdevices being well known in the art.

Bit 5 is used to indicate when the pixel data contains the nextconsecutive row of pixels in the display. This is considered the casewhen Bit 5 is set equal to ‘1’. When bit 5 is set to ‘1’ then the X LeftEdge, Y Top Edge, X Right Edge, Y Bottom Edge, X Start, and Y Startparameters are not defined and are ignored by the client. When Bit 15 isset at a logic-one level, this indicates that the pixel data in thispacket is the last row of pixels in the image. Bit 8 of the ClientFeature Capability Indicators field of the Client Capability Packetindicates whether this feature is supported.

Bits 7 and 6 are Display Update Bits that specify a frame buffer wherethe pixel data is to be written. The more specific effects are discussedelsewhere. For bit values of ‘01’ Pixel data is written to the offlineimage buffer. For bit values of ‘00’ Pixel data is written to the imagebuffer used to refresh the display. For bit values of ‘11’ Pixel data iswritten to all image buffers. The bit values or combination of ‘10’ istreated as an invalid value or designation and Pixel data is ignored andnot written to any of the image buffers. This value may have use forfuture applications of the interface.

Bits 8 through 11 form a 4-bit unsigned integer that specifies analternate display or display location where pixel data is to be routed.Bits 0 and 1 are set equal to ‘00’ in order for the display client tointerpret bits 8 through 11 as an alternate display number. If bits 0and 1 are not equal to ‘00’ then bits 8 through 11 are set to logic-zerolevels.

Bits 12 through 14 are reserved for future use and are generally set tologic-zero levels. Bit 15, as discussed, is used in conjunction with bit5, and setting bit 15 to logic-one indicates that the row of pixels inthe Pixel Data field is the last row of pixels in a frame of data. Thenext Video Stream Packet having bit 5 set to logic-one will correspondto the first row of pixels of the next video frame.

The 2-byte X Start and Y Start fields specify the absolute X and Ycoordinates of the point (X Start, Y Start) for the first pixel in thePixel Data field. The 2-byte X Left Edge and Y Top Edge fields specifythe X coordinate of the left edge and Y coordinate of the top edge ofthe screen window filled by the Pixel Data field, while the X Right Edgeand Y Bottom Edge fields specify the X coordinate of the right edge, andthe Y coordinate of the bottom edge of the window being updated.

The Pixel Count field (2 bytes) specifies the number of pixels in thePixel Data field below.

The Parameter CRC field (2 bytes) contains a CRC of all bytes from thePacket Length to the Pixel Count. If this CRC fails to check then theentire packet is discarded.

The Pixel Data field contains the raw video information that is to bedisplayed, and which is formatted in the manner described by the VideoData Format Descriptor field. The data is transmitted one “row” at atime as discussed elsewhere. When Bit 5 of the Pixel Data Attributesfield is set at logic level one, then the Pixel Data field containsexactly one row of pixels, with the first pixel being transmittedcorresponding to the left-most pixel and the last pixel transmittedcorresponding to the right-most pixel.

The Pixel Data CRC field (2 bytes) contains a 16-bit CRC of only thePixel Data. If a CRC verification of this value fails then the PixelData can still be used, but the CRC error count is incremented.

B. For Audio Stream Packets

In one embodiment, the Audio Channel ID field (1 byte) uses an 8 bitunsigned integer value to identify a particular audio channel to whichaudio data is sent by the client device. The physical audio channels arespecified in or mapped to physical channels by this field as values of0, 1, 2, 3, 4, 5, 6, or 7 which indicate the left front, right front,left rear, right rear, front center, sub-woofer, surround left, andsurround right channels, respectively. An audio channel ID value of 254indicates that the single stream of digital audio samples is sent toboth the left front and right front channels. This simplifiescommunications for applications such as where a stereo headset is usedfor voice communication, productivity enhancement apps are used on aPDA, or other applications where a simple User Interface generateswarning tones. Values for the ID field ranging from 8 through 253, and255 are currently reserved for use where new designs desire additionaldesignations, as anticipated by those skilled in the art.

The Reserved 1 field (1 byte) is generally reserved for future use, andhas all bits in this field set to zero. One function of this field is tocause all subsequent 2 byte fields to align to a 16-bit word address andcause 4-byte fields to align to a 32-bit word address.

The Audio Sample Count field (2 bytes) specifies the number of audiosamples in this packet.

The Bits Per Sample and Packing field contains 1 byte that specifies thepacking format of audio data. In one embodiment, the format generallyemployed is for Bits 4 through 0 to define the number of bits per PCMaudio sample. Bit 5 then specifies whether or not the Digital Audio Datasamples are packed. As mentioned above, FIG. 12 illustrates thedifference between packed and byte-aligned audio samples. A value of ‘0’for Bit 5 indicates that each PCM audio sample in the Digital Audio Datafield is byte-aligned with the interface byte boundary, and a value of‘1’ indicates that each successive PCM audio sample is packed up againstthe previous audio sample. This bit is effective only when the valuedefined in bits 4 through 0 (the number of bits per PCM audio sample) isnot a multiple of eight. Bits 7 through 6 are reserved for use wheresystem designs desire additional designations and are generally set at avalue of zero.

The Audio Sample Rate field (1 byte) specifies the audio PCM samplerate. The format employed is for a value of 0 to indicate a rate of8,000 samples per second (sps), a value of 1 indicates 16,000 sps.,value of 2 for 24,000 sps, value of 3 for 32,000 sps, value of 4 for40,000 sps, value of 5 for 48,000 sps, value of 6 for 11,025 sps, valueof 7 for 22,050 sps, and value of 8 for 44,100 sps, respectively, withvalues of 9 through 255 being reserved for future use, so they arecurrently set to zero.

The Parameter CRC field (2 bytes) contains a 16-bit CRC of all bytesfrom the Packet Length to the Audio Sample Rate. If this CRC fails tocheck appropriately, then the entire packet is discarded. The DigitalAudio Data field contains the raw audio samples to be played, and isusually in the form of a linear format as unsigned integers.

The Audio Data CRC field (2 bytes) contains a 16-bit CRC of only theAudio Data. If this CRC fails to check, then the Audio Data can still beused, but the CRC error count is incremented.

C. For User-Defined Stream Packets

In one embodiment, the 2-byte Stream ID Number field is used to identifya particular user defined stream. The contents of the Stream Parametersand Stream Data fields, are typically defined by the MDDI equipmentmanufacturer. The 2-byte Stream Parameter CRC field contains a 16-bitCRC of all bytes of the stream parameters starting from the PacketLength to the Audio Coding byte. If this CRC fails to check, then theentire packet is discarded. Both the Stream Parameters and StreamParameter CRC fields may be discarded if not needed by an endapplication of the MDDI, that is, they are considered optional. The2-byte Stream Data CRC field contains a CRC of only the Stream Data. Ifthis CRC fails to check appropriately, then use of the Stream Data isoptional, depending on the requirements of the application. Use of thestream data contingent on the CRC being good, generally requires thatthe stream data be buffered until the CRC is confirmed as being good.The CRC error count is incremented if the CRC does not check.

D. For Color Map Packets

The 2-byte hClient ID field contains information or values that arereserved for a Client ID, as used previously. Since this field isgenerally reserved for future use, the current value is set to zero, bysetting the bits to ‘0’.

The 2-byte Color Map Item Count field uses values to specify the totalnumber of 3-byte color map items that are contained in the Color MapData field, or the color map table entries that exist in the Color MapData in this packet. In this embodiment, the number of bytes in theColor Map Data is 3 times the Color Map Item Count. The Color Map ItemCount is set equal to zero to send no color map data. If the Color MapSize is zero then a Color Map Offset value is generally still sent butit is ignored by the display. The Color Map Offset field (4 bytes)specifies the offset of the Color Map Data in this packet from thebeginning of the color map table in the client device.

A 2-byte Parameter CRC field contains a CRC of all bytes from the PacketLength to the Audio Coding byte. If this CRC fails to check then theentire packet is discarded.

For the Color Map Data field, the width of each color map location is aspecified by the Color Map Item Size field, where in one embodiment thefirst part specifies the magnitude of blue, the second part specifiesthe magnitude of green, and the third part specifies the magnitude ofred. The Color Map Size field specifies the number of 3-byte color maptable items that exist in the Color Map Data field. If a single colormap cannot fit into one Video Data Format and Color Map Packet, then theentire color map may be specified by sending multiple packets withdifferent Color Map Data and Color Map Offsets in each packet. Thenumber of bits of blue, green, and red in each color map data item isgenerally the same as specified in the Color Map RGB Width field of theDisplay Capability Packet.

A 2-byte Color Map Data CRC field contains a CRC of only the Color MapData. If this CRC fails to check then the Color Map Data can still beused but the CRC error count is incremented.

Each color map data item is to be transmitted in the order: blue, green,red, with the least significant bit of each component transmitted first.The individual red, green, and blue components of each color map itemare packed, but each color map item (the least significant bit of theblue component) should be byte-aligned. FIG. 97 illustrates an exampleof color map data items with 6 bits of blue, 8 bits of green, and 7 bitsof red. For this example, the Color Map Item Size in the Color MapPacket is equal to 21, and the Color Map RGB Width field of the ClientCapability Packet is equal to 0x0786.

E. For Reverse Link Encapsulation Packets

The Parameter CRC field (2 bytes) contains a 16-bit CRC of all bytesfrom the Packet Length to the Turn-Around Length. If this CRC fails tocheck, then the entire packet is discarded.

In one embodiment, the Reverse Link Flags field (1 byte) contains a setof flags to request information from the client and specify a reverselink type. If a bit (for example, Bit 0) is set to a logic-one level,then the host requests the specified information from the client, but ifthe bit is set to a logic-zero level then the host does not need theinformation from the client. Bit 0 is used to indicate when the hostdesires the Client Capability Packet, which is generally sent by theclient to the host in the Reverse Data Packets field. Bit 1 is used toindicate when the host desires the Client Request and Status Packetwhich is sent by the client to the host in the Reverse Data Packetsfield. The remaining bits (here Bits 2 through 7) are reserved forfuture use and are set to zero. However, more bits can be used asdesired to set flags for the reverse link.

The Reverse Rate Divisor field (1 byte) specifies the number of MDDI_Stbcycles that occur in relation to the reverse link data clock. Thereverse link data clock is equal to the forward link data clock dividedby two times the Reverse Rate Divisor. The reverse link data rate isrelated to the reverse link data clock and the Interface Type on thereverse link. In this embodiment, for a Type 1 interface the reversedata rate equals the reverse link data clock, for Type 2, Type 3, andType 4 interfaces the reverse data rates equal two times, four times,and eight times the reverse link data clock, respectively.

The All Zero 1 field contains a group of bytes, here 8, that is setequal to zero in value by setting the bits at a logic-zero level, and isused to ensure that all MDDI_Data signals are at a logic-zero level fora sufficient time to allow the client to begin recovering clock usingonly MDDI_Stb prior to disabling the host's line drivers during theTurn-Around 1 field. In one embodiment, the length of the All Zero 1field is greater than or equal to the number of forward link bytetransmission times in the round-trip delay of the cable.

The Turn-Around 1 Length field (1 byte) specifies the total number ofbytes that are allocated for Turn-Around 1, establishing the firstturn-around period. The Turn-Around 1 field employs the number of bytesspecified by the Turn-Around 1 Length parameter are allocated to allowthe MDDI_Data line drivers in the client to enable, before the linedrivers in the host are disabled. The client enables its MDDI_Data linedrivers during bit 0 of Turn-Around 1 and the host disables its outputsso as to be completely disabled prior to the last bit of Turn-Around 1.The MDDI_Stb signal behaves as though MDDI_Data0 were at a logic-zerolevel during the entire Turn Around 1 period. A more completedescription of the setting of Turn-Around 1 is given above.

The Reverse Data Packets field contains a series of data packetstransferred from the client to host. The client may send filler packetsor drive the MDDI_Data lines to a logic-zero state or level when it hasno data to send to the host. In this embodiment, if the MDDI_Data linesare driven to zero, the host will interpret this as a packet with a zerolength (not a valid length) and the host will accept no additionalpackets from the client for the duration of the current Reverse LinkEncapsulation Packet.

The Turn-Around 2 Length field (1 byte) specifies the total number ofbytes that are allocated for Turn-Around 2, for establishing a secondturn-around period. The recommended length of Turn-Around 2 is thenumber of bytes required for the round-trip delay plus the time requiredfor the host to enable its MDDI_Data drivers. Turn-Around 2 Length maybe also be a value larger than the minimum required or calculated valueto allow sufficient time to process reverse link packets in the host.

The Turn Around 2 field consists of the number of bytes as specified bythe Turn-Around Length parameter. The host waits for at least the roundtrip delay time before it enables its MDDI_Data line drivers duringTurn-Around 2. The host enables its MDDI_Data line drivers so that theyare generally completely enabled prior to the last bit of Turn-Around 2,and the client disables its outputs so that they are generallycompletely disabled prior to the last bit of Turn-Around 2. The purposeof the Turn-Around 2 field is to allow the remaining amount of data fromthe Reverse Data Packets field to be transmitted or transferred from theclient. Variations in different systems implementing the interface andthe amount of safety margin allocated, it is possible that neither thehost nor client will be driving the MDDI_Data signals to a logic-zerolevel during some parts of the Turn Around 2 field period, as seen bythe line receivers in or at the host. The MDDI_Stb signal behaves asthough the MDDI_Data0 were at a logic-zero level during substantiallythe entire Turn Around 2 period. A description of the setting ofTurn-Around 2 is given above.

The Reverse Data Packets field contains a series of data packets beingtransferred from the client to a host. As stated earlier, Filler packetsare sent to fill the remaining space that is not used by other packettypes.

The All Zero 2 field contains a group of bytes (8 in this embodiment)that is set equal to zero in value by setting the bits at a logic-zerolevel, and is used to ensure that all MDDI_Data signals are at alogic-zero level for a sufficient time to allow the client to beginrecovering clock using both MDDI_Data0 and MDDI_Stb after enabling thehost's line drivers following the Turn-Around 2 field.

F. For Client Capability Packets

As illustrated for one embodiment, the Protocol Version field uses 2bytes to specify a protocol version used by the client. The initialversion is currently set equal to one, and will be changed over time asnew versions are generated as would be known, while the Minimum ProtocolVersion field uses 2 bytes to specify the minimum protocol version thatthe client can employ or interpret. In this case, a zero value is also avalid value. The Data Rate Capability field (2 bytes) specifies themaximum data rate the client can receive on each data pair on theforward link of the interface, and is specified in the form of megabitsper second (Mbps). The Interface Type Capability field (1 byte)specifies the interface types that are supported on the forward andreverse links. A bit set to ‘1’ indicates that a specified interfacetype is supported, and a bit set to ‘0’ indicates that the specifiedtype is not supported. Hosts and clients should support at least Type 1on the forward and reverse links. There is no requirement to support acontiguous range of interface types. For example, it would be perfectlyvalid to support only Type 1 and Type 3, but not Type 3 and Type 4 in aninterface. It is also not necessary for the forward and reverse links tooperate with the same interface type. However, when a link comes out ofhibernation both forward and reverse links should commence operating inType 1 mode, until other modes may be negotiated, selected, or otherwiseapproved for use by both the host and client.

The supported interfaces are indicated in one embodiment by selectingBit 0, Bit 1, or Bit 2 to select either a Type 2 (2 bit), Type 3 (4bit), or Type 4 (8 bit) mode on the forward link, respectively; and Bit3, Bit 4, or Bit 5 to select either a Type 2, Type 3, or Type 4 mode onthe reverse link, respectively; with Bits 6 and 7 being reserved andgenerally set to zero at this time. The Bitmap Width and Height fields,here each being 2 bytes, specify the width and height of the bitmap,respectively, in pixels.

The Monochrome Capability field (1 byte) is used to specify the numberof bits of resolution that can be displayed in a monochrome format. If adisplay cannot use a monochrome format then this value is set at zero.Bits 7 through 4 are reserved for future use and are, thus, set as zero.Bits 3 through 0 define the maximum number of bits of grayscale that canexist for each pixel. These four bits make it possible to specify valuesof 1 to 15 for each pixel. If the value is zero then monochrome formatis not supported by the display.

The Bayer Capability field uses 1 byte to specify the number of bits ofresolution, pixel group, and pixel order that can be transferred inBayer format. If the client cannot use the Bayer format then this valueis zero. The Bayer Capability field is composed of the following values:Bits 3 through 0 define the maximum number of bits of intensity thatexist in each pixel, while Bits 5 through 4 define the pixel grouppattern that is required, while Bits 8 through 6 define the pixel orderthat is required; with Bits 14 through 9 being reserved for future useand generally set to zero in the meantime. Bit 15, when set to alogic-one level indicates that the client can accept Bayer pixel data ineither packed or unpacked format. If bit 15 is set to zero thisindicates that the client can accept Bayer pixel data only in unpackedformat.

The Color Map Capability field (3 bytes) specifies the maximum number oftable items that exist in the color map table in the display. If thedisplay cannot use the color map format then this value is set at zero.

The RGB Capability field (2 bytes) specifies the number of bits ofresolution that can be displayed in RGB format. If the display cannotuse the RGB format then this value is equal to zero. The RGB Capabilityword is composed of three separate unsigned values where: Bits 3 through0 define the maximum number of bits of blue, Bits 7 through 4 define themaximum number of bits of green, and Bits 11 through 8 define themaximum number of bits of red in each pixel. Currently, Bits 14 through12 are reserved for future use and are generally set to zero. Bits 14through 12 are reserved for future use and generally set to zero. Bit15, when set to a logic-one level indicates that the client can acceptRGB pixel data in either packed or unpacked format. If bit 15 is set toa logic-zero level, this indicates that the client can accept RGB pixeldata only in unpacked format.

The Y Cr Cb Capability field (2 bytes) specifies the number of bits ofresolution that can be displayed in Y Cr Cb format. If the displaycannot use the Y Cr Cb format then this value is set equal to zero. TheY Cr Cb Capability word is composed of three separate unsigned valueswhere: Bits 3 through 0 define the maximum number of bits in the Cbsample, Bits 7 through 4 define the maximum number of bits in the Crsample, Bits 11 through 8 define the maximum number of bits in the Ysample, and Bits 15 through 12 are currently reserved for future use andare set to zero.

The Client Feature Capability field uses 4 bytes that contain a set offlags that indicate specific features in the client that are supported.A bit set to a logic-one level indicates the capability is supported,while a bit set to a logic-zero level indicates the capability is notsupported. In one embodiment, the value for Bit 0 indicates whether ornot Bitmap Block Transfer Packet (packet type 71) is supported. Thevalue for Bits 1, 2, and 3 indicate whether or not Bitmap Area FillPacket (packet type 72), Bitmap Pattern Fill Packet (packet type 73), orCommunication Link Data Channel Packet (packet type 74), respectively,are supported. The value for Bit 4 indicates whether or not the clienthas the capability to make one color transparent using the TransparentColor Enable Packet, while values for Bits 5 and 6 indicate if theclient can accept video data or audio data in packed format,respectively, and the value for Bit 7 indicates whether or not theclient can send a reverse-link video stream from a camera. The value forBit 8 indicates whether or not the client has the ability to receive afull line of pixel data and ignore display addressing as specified bybit 5 of the Pixel Data Attributes field of the Video Stream Packet, andthe client can also detect frame sync or end of video frame data usingbit 15 of the Pixel Data Attributes Field.

The value for Bits 11 and 12 indicate when the client is communicatingeither with a pointing device and can send and receive Pointing DeviceData Packets, or with a keyboard and can send and receive Keyboard DataPackets, respectively. The value for Bit 13 indicates whether or not theclient has the ability to set one or more audio or video parameters bysupporting the VCP Feature packets: Request VCP Feature Packet, VCPFeature Reply Packet, Set VCP Feature Packet, Request Valid ParameterPacket, and Valid Parameter Reply Packet. The value for Bit 14 indicateswhether or not the client has the ability to write pixel data into theoffline display frame buffer. If this bit is set to a logic-one levelthen the Display Update Bits (bits 7 and 6 of the Pixel Data Attributesfield of the Video Stream Packet) may be set to the values ‘01’.

The value for Bit 15 indicates when the client has the ability to writepixel data into only the display frame buffer currently being used torefresh the display image. If this bit is set to one then the DisplayUpdate Bits (bits 7 and 6 of the Pixel Data Attributes field of theVideo Stream Packet) may be set to the values ‘00’. The value for Bit 16indicates when the client has the ability to write pixel data from asingle Video Stream Packet into all display frame buffers. If this bitis set to one then the Display Update Bits (bits 7 and 6 of the PixelData Attributes field of the Video Stream Packet) may be set to thevalue ‘11’.

The value for Bit 17 indicates when a client has the ability to respondto the Request Specific Status Packet, the value for Bit 18 indicateswhen the client has the ability to respond to the Round Trip DelayMeasurement Packet, and the value for Bit 19 indicates when the clienthas the ability to the Forward Link Skew Calibration Packet.

The value for Bit 20 indicates when the client has the ability torespond to the Display Power State Packet.

The value for Bit 21 indicates when the client has the ability tointerpret the Request Specific Status Packet and respond with the ValidStatus Reply List Packet. The client indicates an ability to returnadditional status in the Valid Parameter Reply List field of the ValidStatus Reply List Packet as described elsewhere.

The value for Bit 22 indicates whether or not the client has the abilityto respond to the Register Access Packet. Bits 9 through 10, and 23through 31 are currently reserved for future use or alternativedesignations useful for system designers and are generally set equal tozero.

The Display Video Frame Rate Capability field (1 byte) specifies themaximum video frame update capability of the display in frames persecond. A host may choose to update the image at a slower rate than thevalue specified in this field.

The Audio Buffer Depth field (2 bytes) specifies the depth of theelastic buffer in a Display which is dedicated to each audio stream.

The Audio Channel Capability field (2 bytes) contains a group of flagsthat indicate which audio channels are supported by the client or clientconnected device. A bit set to one indicates the channel is supported,and a bit set to zero indicates that channel is not supported. The Bitpositions are assigned to the different channels, for example Bitpositions 0, 1, 2, 3, 4, 5, 6, and 7 in one embodiment, indicate theleft front, right front, left rear, right rear, front center,sub-woofer, surround left, and surround right channels, respectively.Bits 8 through 14 are currently reserved for future use, and aregenerally set to zero. In one embodiment Bit 15 is used to indicate ifthe client provides support for the Forward Audio Channel Enable Packet.If this is the case, Bit 15 set to a logic-one level. If, however, theclient is not capable of disabling audio channels as a result of theForward Audio Channel Enable Packet or if the client does not supportany audio capability, then this bit is set to a logic-zero level orvalue.

A 2-byte Audio Sample Rate Capability field, for the forward link,contains a set of flags to indicate the audio sample rate capability ofthe client device. Bit positions are assigned to the different ratesaccordingly, such as Bits 0, 1, 2, 3, 4, 5, 6, 7, and 8 being assignedto 8,000, 16,000, 24,000, 32,000, 40,000, 48,000, 11,025, 22,050, and44,100 samples per second (SPS), respectively, with Bits 9 through 15being reserved for future or alternative rate uses, as desired, so theyare currently set to ‘0’. Setting a bit value for one of these bits to‘1’ indicates that that particular sample rate is supported, and settingthe bit to ‘0’ indicates that that sample rate is not supported.

The Minimum Sub-frame Rate field (2 bytes) specifies the minimumsub-frame rate in frames per second. The minimum sub-frame rate keepsthe client status update rate sufficient to read certain sensors orpointing devices in the client.

A 2-byte Mic Sample Rate Capability field, for the reverse link,contains a set of flags that indicate the audio sample rate capabilityof a microphone in the client device. For purposes of the MDDI, a clientdevice microphone is configured to minimally support at least an 8,000sample per second rate. Bit positions for this field are assigned to thedifferent rates with bit positions 0, 1, 2, 3, 4, 5, 6, 7, and 8, forexample, being used to represent 8,000, 16,000, 24,000, 32,000, 40,000,48,000, 11,025, 22,050, and 44,100 samples per second (SPS),respectively, with Bits 9 through 15 being reserved for future oralternative rate uses, as desired, so they are currently set to ‘0’.Setting a bit value for one of these bits to ‘1’ indicates that thatparticular sample rate is supported, and setting the bit to ‘0’indicates that that sample rate is not supported. If no microphone isconnected then each of the Mic Sample Rate Capability bits are set equalto zero.

The Keyboard Data Format field (here 1 byte) specifies whether or not akeyboard is connected to the client system and the type of keyboard thatis connected. In one embodiment, the value established by Bits 6 through0 is used to define the type of keyboard that is connected. If the valueis zero (0) then the keyboard type is considered as unknown. For a valueof 1, the keyboard data format is considered to be a standard PS-2style. Currently values in the range of 2 through 125 are not in use,being reserved for use of system designers and interface incorporatorsor product developers to define specific keyboard or input devices foruse with the MDDI and corresponding clients or hosts. A value of 126 isused to indicate that the keyboard data format is user-defined, while avalue of 127 is used to indicate that a keyboard cannot be connected tothis client. In addition, Bit 7 can be used to indicate whether or notthe keyboard can communicate with the client. The intended use of thisbit is to indicate when the keyboard can communicate with the clientusing a wireless link. Bit 7 would be set to a zero level if bits 6through 0 indicate that a keyboard cannot be connected to the client.Therefore, for one embodiment, when the value of Bit 7 is 0, thekeyboard and client cannot communicate, while if the value of Bit 7 is1, the keyboard and client have acknowledged that they can communicatewith each other.

The Pointing Device Data Format field (here 1 byte) specifies whether ornot a pointing device is connected to the client system and the type ofpointing device that is connected. In one embodiment, the valueestablished by Bits 6 through 0 is used to define the type of pointingdevice that is connected. If the value is zero (0) then the pointingdevice type is considered as unknown. For a value of 1, the pointingdevice data format is considered to be a standard PS-2 style. Currentlyvalues in the range of 2 through 125 are not in use, being reserved foruse of system designers and interface incorporators or productdevelopers to define specific pointing device or input devices for usewith the MDDI and corresponding clients or hosts. A value of 126 is usedto indicate that the pointing device data format is user-defined, whilea value of 127 is used to indicate that a pointing device cannot beconnected to this client. In addition, Bit 7 can be used to indicatewhether or not the pointing device can communicate with the client. Theintended use of this bit is to indicate when the keyboard cancommunicate with the client using a wireless link. Bit 7 would be set toa zero level if bits 6 through 0 indicate that a pointing device cannotbe connected to the client. Therefore, for one embodiment, when thevalue of Bit 7 is 0, the pointing device and client cannot communicate,while if the value of Bit 7 is 1, the pointing device and client haveacknowledged that they can communicate with each other.

The Content Protection Type field (2 bytes) contains a set of flags thatindicate the type of digital content protection that is supported by theDisplay. Currently, bit position 0 is used to indicate when DTCP issupported and bit position 1 is used to indicate when HDCP is supported,with bit positions 2 through 15 being reserved for use with otherprotection schemes as desired or available, so they are currently set tozero.

The Mfr Name field (here 2 bytes) contains the EISA 3-character ID ofthe manufacturer, packed into three 5-bit characters in the same manneras in the VESA EDID specification. The character ‘A’ is represented as00001 binary, the character ‘Z’ is represented as 11010 binary, and allletters between ‘A’ and ‘Z’ are represented as sequential binary valuesthat correspond to the alphabetic sequence between ‘A’ and ‘Z’. The mostsignificant bit of the Mfr Name field is unused and is generally set tologic-zero for now until a use is made in the future implementations.For example, a manufacturer represented by the string “XYZ” would have aMfr Name value of 0x633a. If this field is not supported by the clientit is generally set to zero. Product Code field uses 2 bytes to containa product code assigned by the display manufacturer. If this field isnot supported by the client it is generally set to zero.

Reserved 1, Reserved 2, and Reserved 3 fields (here 2 bytes each) arereserved for future use in imparting information. All bits in thesefield are generally be set to a logic-zero level. The purpose of suchfields is currently to cause all subsequent 2 byte fields to align to a16-bit word address and cause 4-byte fields to align to a 32-bit wordaddress.

The Serial Number field uses 4 bytes in this embodiment to specify theserial number of the display in numeric form. If this field is notsupported by the client it is generally set to zero. The Week ofManufacture field uses 1 byte to define the week of manufacture of thedisplay. This value is typically in the range of 1 to 53 if it issupported by the client. If this field is not supported by the client itis set to zero. The Year of Manufacture field is 1 byte that defines theyear of manufacture of the display. This value is an offset from theyear 1990. Years in the range of 1991 to 2245 can be expressed by thisfield. Example: the year 2003 corresponds to a Year of Manufacture valueof 13. If this field is not supported by the client it is set to zero.

The CRC field (here 2 bytes) contains a 16-bit CRC of all bytes in thepacket including the Packet Length.

G. For Client Request and Status Packets

The Reverse Link Request field (3 byte) specifies the number of bytesthe client needs in the reverse link in the next sub-frame to sendinformation to the host.

The CRC Error Count field (1 byte) indicates how many CRC errors haveoccurred since the beginning of the media-frame. The CRC count is resetwhen a sub-frame header packet with a Sub-frame Count of zero is sent.If the actual number of CRC errors exceeds 255 then this value generallysaturates at 255.

The Capability Change field uses 1 byte to indicate a change in thecapability of the client. This could occur if a user connects aperipheral device such as a microphone, keyboard, or display, or forsome other reason. When Bits[7:0] are equal to 0, then the capabilityhas not changed since the last Client Capability Packet was sent.However, when Bits[7:0] are equal to 1 to 255, the capability haschanged. The Client Capability Packet is examined to determine the newdisplay characteristics.

The Client Busy Flags field uses 2 bytes to indicate that the client isperforming a specific function and is not ready to yet accept anotherpacket related to that function. A bit set to a logic-one level or valueindicates that the particular function is currently being performed bythe client and that the related function in the client is busy. If therelated function in the client is ready, the bit is set t a logic-zero.The client should return a busy status (bit set to one) for allfunctions that are not supported in the client.

In one embodiment these bytes are interpreted according to therelationship: if Bit 0 is a ‘1’ then the bitmap block transfer functionis busy, while if Bit 1 is a ‘1’, then a bitmap area fill function isbusy, and if Bit 2 is a ‘1’, then a bitmap pattern fill function isbusy. Currently, Bits 3 through 15 remain reserved for future use andare generally set to a logic-one level or state to indicate a busystatus in case these bits are assigned in the future.

H. For Bit Block Transfer Packets

The Window Upper Left Coordinate X Value and Y Value fields use 2 byteseach to specify the X and Y value of the coordinates of the upper leftcorner of the window to be moved. The Window Width and Height fields use2 bytes each to specify the width and height of the window to be moved.The Window X Movement and Y Movement fields use 2 bytes each to specifythe number of pixels that the window is to be moved horizontally andvertically, respectively. Typically, these coordinates are configuredsuch that positive values for X cause the window to be moved to theright, and negative values cause movement to the left, while positivevalues for Y cause the window to be moved down, and negative valuescause upward movement.

I. For Bitmap Area Fill Packets

Window Upper Left Coordinate X Value and Y Value fields use 2 bytes eachto specify the X and Y value of the coordinates of the upper left cornerof the window to be filled. The Window Width and Height fields (2 byteseach) specify the width and height of the window to be filled. The VideoData Format Descriptor field (2 bytes) specifies the format of the PixelArea Fill Value. The format is the same as the same field in the VideoStream Packet. The Pixel Area Fill Value field (4 bytes) contains thepixel value to be filled into the window specified by the fieldsdiscussed above. The format of this pixel is specified in the Video DataFormat Descriptor field.

J. For Bitmap Pattern Fill Packets

Window Upper Left Coordinate X Value and Y Value fields use 2 bytes eachto specify the X and Y value of the coordinates of the upper left cornerof the window to be filled. The Window Width and Height fields (2 byteseach) specify the width and height of the window to be filled. ThePattern Width and Pattern Height fields (2 bytes each) specify the widthand height, respectively, of the fill pattern. The Horizontal PatternOffset field (2 bytes) specifies a horizontal offset of the pixel datapattern from the left edge of the specified window to be filled. Thevalue being specified is to be less than the value in the Pattern WidthField. The Vertical Pattern Offset field (2 bytes) specifies a verticaloffset of the pixel data pattern from the top edge of the specifiedwindow to be filled. The value being specified is to be less than thevalue in the Pattern Height field.

The 2-byte Video Data Format Descriptor field specifies the format ofthe Pixel Area Fill Value. FIG. 11 illustrates how the Video Data FormatDescriptor is coded. The format is the same as the same field in theVideo Stream Packet.

The Parameter CRC field (2 bytes) contains a CRC of all bytes from thePacket Length to the Video Format Descriptor. If this CRC fails to checkthen the entire packet is discarded. The Pattern Pixel Data fieldcontains raw video information that specifies the fill pattern in theformat specified by the Video Data Format Descriptor. Data is packedinto bytes, and the first pixel of each row is to be byte-aligned. Thefill pattern data is transmitted a row at a time. The Pattern Pixel DataCRC field (2 bytes) contains a CRC of only the Pattern Pixel Data. Ifthis CRC fails to check then the Pattern Pixel Data can still be usedbut the CRC error count is incremented.

K. Communication Link Data Channel Packets

The Parameter CRC field (2 bytes) contain a 16-bit CRC of all bytes fromthe Packet Length to the Packet Type. If this CRC fails to check thenthe entire packet is discarded.

The Communication Link Data field contains the raw data from thecommunication channel. This data is simply passed on to the computingdevice in the display.

The Communication Link Data CRC field (2 bytes) contains a 16-bit CRC ofonly the Communication Link Data. If this CRC fails to check then theCommunication Link Data is still used or useful, but the CRC error countis incremented.

L. For Forward Audio Channel Enable Packets

The Audio Channel Enable Mask field (1 byte) contains a group of flagsthat indicate which audio channels are to be enabled in a client. A bitset to one enables the corresponding channel, and a bit set to zerodisables the corresponding channel Bits 0 through 5 designate channels 0through 5 which address left front, right front, left rear, right rear,front center, and sub-woofer channels, respectively. Bits 6 and 7 arereserved for future use, and in the mean time are generally set equal tozero.

M. For Reverse Audio Sample Rate Packets

The Audio Sample Rate field (1 byte) specifies the digital audio samplerate. The values for this field are assigned to the different rates withvalues of 0, 1, 2, 3, 4, 5, 6, 7, and 8 being used to designate 8,000,16,000, 24,000, 32,000, 40,000, 48,000, 11,025, 22,050, and 44,100samples per second (SPS), respectively, with values of 9 through 254being reserved for use with alternative rates, as desired, so they arecurrently set to ‘0’. A value of 255 is used to disable the reverse-linkaudio stream.

The Sample Format field (1 byte) specifies the format of the digitalaudio samples. When Bits[1:0] are equal to ‘0’, the digital audiosamples are in linear format, when they are equal to 1, the digitalaudio samples are in μ-Law format, and when they are equal to 2, thedigital audio samples are in μ-Law format. Bits[7:2] are reserved foralternate use in designating audio formats, as desired, and aregenerally set equal to zero.

N. For the Digital Content Protection Overhead Packets

The Content Protection Type field (1 byte) specifies the digital contentprotection method that is used. A value of ‘0’ indicates DigitalTransmission Content Protection (DTCP) while a value of 1 indicatesHigh-bandwidth Digital Content Protection System (HDCP). The value rangeof 2 through 255 is not currently specified but is reserved for use withalternative protection schemes as desired. The Content ProtectionOverhead Messages field is a variable length field containing contentprotection messages sent between the host and client.

O. For the Transparent Color Enable Packets

The Transparent Color Enable field (1 byte) specifies when transparentcolor mode is enabled or disabled. If Bit 0 is equal to 0 thentransparent color mode is disabled, if it is equal to 1 then transparentcolor mode is enabled and the transparent color is specified by thefollowing two parameters. Bits 1 through 7 of this byte are reserved forfuture use and are typically set equal to zero.

The Video Data Format Descriptor field (2 bytes) specifies the format ofthe Pixel Area Fill Value. FIG. 11 illustrates how the Video Data FormatDescriptor is coded. The format is generally the same as the same fieldin the Video Stream Packet.

The Pixel Area Fill Value field uses 4 bytes allocated for the pixelvalue to be filled into the window specified above. The format of thispixel is specified in the Video Data Format Descriptor field.

P. For the Round Trip Delay Measurement Packets

The 2-byte Packet Length field specifies the total number of bytes inthe packet not including the packet length field, and in one embodimentis selected to have a fixed length of 159. The 2-byte Packet Type fieldthat identifies this packet type with a value of 82, identifying apacket as a Round Trip Delay Measurement Packet. The hClient ID field,as before is reserved for future use as a Client ID, and is generallyset to zero.

In one embodiment, the Parameter CRC field (2 bytes) contains a 16-bitCRC of all bytes from the Packet Length to the Packet Type. If this CRCfails to check then the entire packet is discarded.

The Guard Time 1 field (here 64 bytes) is used to allow the MDDI_Dataline drivers in the client to enable before the line drivers in the hostare disabled. The client enables its MDDI_Data line drivers during bit 0of Guard Time 1 and the host disenables its line drivers so as to becompletely disabled prior to the last bit of Guard Time 1. The host andclient both drive a logic-zero level during Guard Time 1 when they arenot disabled. Another purpose of this field is to ensure that allMDDI_Data signals are at a logic-zero level for a sufficient time toallow the client to begin recovering a clock or clock signal using onlyMDDI_Stb prior to disabling the host's line drivers.

The Measurement Period field is a 64 byte window used to allow theclient to respond with two bytes of 0xff, and 30 bytes of 0x00 at halfthe data rate used on the forward link. This data rate corresponds to aReverse Link Rate Divisor of 1. The client returns this responseimmediately at the time it perceives as being the beginning of theMeasurement Period. This response from the client will be received at ahost at precisely the round trip delay of the link plus logic delay inthe client after the beginning of the first bit of the MeasurementPeriod at the host.

The All Zero 1 field (2 bytes) contains zeroes to allow the MDDI_Dataline drivers in the host and client to overlap so that MDDI_Data isalways driven. The host enables MDDI_Data line drivers during bit 0 ofthe All Zero 1 field, and the client also continues to drive the signalto a logic-zero level as it did at the end of the Measurement Period.

The value in the Guard Time 2 field (64 bytes) allows overlap of theMeasurement Period driven by the client when the round trip delay is atthe maximum amount that can be measured in the Measurement Period. TheClient disables its line drivers during bit 0 of Guard Time 2 and theHost enables its line drivers immediately after the last bit of GuardTime 2. The host and client both drive a logic-zero level during GuardTime 2 when they are not disabled. Another purpose of this field is toensure that all MDDI_Data signals are at a logic-zero level for asufficient time to allow the client to begin recovering a clock signalusing both MDDI_Data0 and MDDI_Stb after enabling the line drivers for ahost.

Q. For the Forward Link Skew Calibration Packets

In one embodiment, the Parameter CRC field (2 bytes) contains a 16-bitCRC of all bytes from the Packet Length to the Packet Type. If this CRCfails to check then the entire packet is discarded.

The All Zero 1 field uses 8 bytes to ensure that there will be antransitions on the MDDI_Stb at the beginning of the Calibration DataSequence field. Generally, these bytes employ 8-bit unsigned integersequal to zero. It also provides for sufficient time for the client corelogic to change the mode of the clock recovery circuit from using theXOR of MDDI_(—)0 and MDDI_Stb, to simply using MDDI_Stb or the MDDI_Stbsignal as the recovered clock.

The Calibration Data Sequence field contains a data sequence that causesthe MDDI_Data signals to toggle at every data period. The length of theCalibration Data Sequence field is determined by the interface beingused on the forward link. During the processing of the Calibration DataSequence, the MDDI host controller sets all MDDI_Data signals equal tothe strobe signal. The client clock recovery circuit should use onlyMDDI_Stb rather than MDDI_Stb XOR MDDI_Data0 to recover the data clockwhile the Calibration Data Sequence field is being received by theclient. Depending on the exact phase of the MDDI_Stb signal at thebeginning of the Calibration Data Sequence field, the Calibration DataSequence will generally be one of the following based on the interfaceType being used when this packet is sent:

-   -   Type 1—(64 byte data sequence) 0xaa, 0xaa . . . or 0x55, 0x55 .        . .    -   Type 2—(128 byte data sequence) 0xcc, 0xcc . . . or 0x33, 0x33 .        . .    -   Type 3—(256 byte data sequence) 0xf0, 0xf0 . . . or 0x0f, 0x0f .        . .    -   Type 4—(512 byte data sequence) 0xff, 0x00, 0xff, 0X00 . . . or        0x00, 0xff, 0x00, 0xff . . .

The All Zero 2 field uses 8 bytes to provide sufficient time for theclient core logic to change the mode of the clock recovery circuit backto an original state, from using the MDDI_Stb signal as the recoveredclock to using the XOR of MDDI_(—)0 and MDDI_Stb. Generally, these bytesemploy 8-bit unsigned integers equal to zero.

An example of the possible MDDI_Data and MDDI_Stb waveforms for both theType 1 and Type 2 Interfaces are shown in FIGS. 62A and 62B,respectively.

XX. Conclusion

While various embodiments of the present invention have been describedabove, it should be understood that they have been presented by way ofexample only, and not limitation. Thus, the breadth and scope of thepresent invention should not be limited by any of the above-describedexemplary embodiments, but should be defined only in accordance with thefollowing claims and their equivalents.

What is claimed is:
 1. A method for routing pixel data from a scaledvideo stream packet within a client in a mobile display digitalinterface (MDDI) communication system, the method comprising the stepsof: receiving a predefined pixel content by the client from a host;scaling the predefined pixel content to a specific size by the client;providing a data attribute field with values that specify pixel datarouting and display buffer locations; sending the scaled pixel contentto at least one specific display buffer location of the display bufferslocations within the client; and displaying the scaled pixel content inthe at least one specific display buffer location.
 2. The method ofclaim 1 wherein the at least one specific display buffer locationincludes an image displayed to the left eye or the right eye.
 3. Themethod of claim 1 wherein the at least one specific display bufferlocation is read by a display controller to refresh the image currentlybeing displayed.
 4. The method of claim 1 wherein the at least onespecific display buffer location comprises an offline image buffer.
 5. Ahardware system for routing pixel data from a scaled video stream packetwithin a client in a mobile display digital interface (MDDI)communication system, the system comprising: means for receiving apredefined pixel content by the client from a host; means for scalingthe predefined pixel content to a specific size by the client; means forproviding a data attribute field with values that specify pixel datarouting and display buffer locations; means for sending the scaled pixelcontent to at least one specific display buffer location of the displaybuffer locations within the client; and means for displaying the scaledpixel content in the at least one specific display buffer location. 6.The system of claim 5 wherein the at least one specific display bufferlocation contains an image displayed to the left eye or the right eye.7. The system of claim 5 further comprising a means for reading the atleast one specific display buffer location to refresh the imagecurrently being displayed.
 8. The system of claim 5 wherein the at leastone specific display buffer location comprises an offline image buffer.9. A computer readable medium comprising program instructions which areexecuted by a processor to implement pixel data to be routed from ascaled video stream packet within a client in a mobile display digitalinterface (MDDI) communication system, the computer readable mediumcomprising: program instructions that cause a predefined pixel contentbe received by the client from a host; program instructions that causethe predefined pixel content be scaled to a specific size by the client;program instructions that cause a data attribute field to be providedwith values that specify pixel data routing and display bufferlocations; program instructions that cause the scaled pixel content besent to at least one specific display buffer location, of the displaybuffers locations, within the client; and program instructions thatcause the scaled pixel content in the at least one specific displaybuffer location be displayed.
 10. The of claim 9 wherein the computerreadable medium of claim 9 wherein at least one specific display bufferlocation contains an image displayed to the left eye or the right eye.11. The computer readable medium of claim 9 further comprising code forcausing an instruction to read at least one specific display bufferlocation to refresh the image currently being displayed.
 12. Thecomputer readable medium of claim 9 wherein the at least one specificdisplay buffer location comprises an offline image buffer.
 13. Ahardware system for routing pixel data from a scaled video stream packetwithin a client in a mobile display digital interface (MDDI)communication system, the system comprising: a client configured to:receive a predefined pixel content from a host; scale the predefinedpixel content to a specific size; receive a provided data attributefield with values that specify pixel data routing and display bufferlocations; send the scaled pixel content to at least one specificdisplay buffer location of the display buffer locations within theclient; and display the scaled pixel content in the at least onespecific display buffer location.
 14. The system of claim 13 wherein theclient is further configured to read the at least one specific displaybuffer location to refresh the image currently being displayed.